代码之家  ›  专栏  ›  技术社区  ›  Elad Benda2

无法将数据从客户端发送到服务器

  •  0
  • Elad Benda2  · 技术社区  · 9 年前

    我尝试从js调用java后端

    角js( http://localhost:8082/dev/index.html#/ ):

    self.submit = function() {
      console.log("in voice prompt component - submit");
      console.log(self.voice);
      $http.put('localhost:8082/api/Voices/updateVoice', self.voice).then(
        function successCallback(response) {
          self.voices = response.data;
        },
        function errorCallback(response) {
          // called asynchronously if an error occurs
          // or server returns response with an error status.
          console.log(response); 
        });
    }
    

    java(应响应 localhost:8082/api/Voices/updateVoice

    @Path("/Voices")
    public class VoicesOperation {
    
    ...
    
        @Path("/updateVoice")
        @PUT
        @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
        public void updateVoice(VoiceBl voice) throws Exception {
    
            fillVoicesSnapshot();
    

    我得到这个js异常:

    TypeError: 'caller' and 'arguments' are restricted function properties and cannot be accessed in this context.
        at Function.remoteFunction (<anonymous>:3:14)
        at errorCallback (http://localhost:3002/public/js/components/voice-form-component.js:54:29)
        at http://localhost:3002/bower_components/angular/angular.min.js:133:460
        at m.$eval (http://localhost:3002/bower_components/angular/angular.min.js:147:313)
        at m.$digest (http://localhost:3002/bower_components/angular/angular.min.js:144:421)
        at m.$apply (http://localhost:3002/bower_components/angular/angular.min.js:148:78)
        at HTMLButtonElement.<anonymous> (http://localhost:3002/bower_components/angular/angular.min.js:282:247)
        at cg (http://localhost:3002/bower_components/angular/angular.min.js:38:299)
        at HTMLButtonElement.d (http://localhost:3002/bower_components/angular/angular.min.js:38:246)
    
    1 回复  |  直到 9 年前
        1
  •  0
  •   Pramod Kumar Sharma    9 年前

    问题是您的资源文件,您没有发送任何东西,也没有消费任何东西。如果您正在发送响应,那么您的返回类型应该是response,并且您还需要消费。

    @Path("/Voices")
    public class VoicesOperation {
    
    ...
    
        @Path("/updateVoice")
        @PUT
        @Consumes(MediaType.APPLICATION_JSON)
        @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
        public Response updateVoice(VoiceBl voice) throws Exception {
            Voice voice = fillVoicesSnapshot();
            return Response.status(Status.CREATED)
                           .entity(voice)
                           .build();
        }
    }
    

    或者,如果您发送的是语音类型,则返回类型应为语音。

    @Path("/Voices")
    public class VoicesOperation {
    
    ...
    
        @Path("/updateVoice")
        @PUT
        @Consumes(MediaType.APPLICATION_JSON)
        @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
        public Voice updateVoice(VoiceBl voice) throws Exception {
    
            return fillVoicesSnapshot();
        } 
    }