AJAX jQuery请求返回201 OK但是错误事件被触发而不是成功

时间:2015-12-29 20:36:22

标签: jquery ajax jersey-2.0

我正在服务器端实现Jersy服务,在POST方法上返回201。但是在响应的jQuery中,总是调用错误函数。

我正在检查localhost上的应用程序并从Windows IIS启动该页面。

我所做的一切似乎都没有帮助。

Jersy Java代码:

@POST
@Produces({ MediaType.APPLICATION_JSON})
public Response createUser(InputStream is) throws APIException , Exception
{
    ObjectMapper mapper = new ObjectMapper();
    UserDTO userDTO =  mapper.readValue(is,  UserDTO.class);
    UserDTO createUser = userFacade.createUser(userDTO);
    return Response.status(Response.Status.CREATED).entity(userDTO).build();
}

Jquery代码:

function createUser () {
        var data = formToJSON();
        debugger;

         $.ajax({
             type: 'POST',
             url: 'http://localhost:8082/wfm/api/rest/users',
             data: formToJSON(),
             contentType: 'application/json',
             dataType: "json",
             success: function(){
                alert('success');
            },
            error: function(){
                alert('error' + message);
            }
        });

    }

function formToJSON() {
        return JSON.stringify({
            "id": "",
            "firstName": $('#signUp_firstName').val(),
            "lastName": $('#signUp_lastName').val(),
            "email": $('#signUp_email').val(),
            "password": $('#signUp_password').val()
            });

    }

退回Json:

{
    "id": "1",
    "firstName": "Avi",
    "lastName": "lastname",
    "email": "user@gmail.com",
    "password": "4321rewq"
}

返回页眉:

 Content-Length → 102
 Content-Type → application/json; charset=UTF-8
 Date → Tue, 29 Dec 2015 20:04:38 GMT
 Server → Jetty(9.2.6.v20141205)
 X-Application-Context → application:8082

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。

我在jquery代码中有错误:

 function createUser () {
      var data = formToJSON();
      debugger;

     $.ajax({
         type: 'POST',
         url: 'http://localhost:8082/wfm/api/rest/users',
         data: formToJSON(),
         contentType: 'application/json',
         dataType: "json",
         success: function(){
            alert('success');
        },
        error: function(){
            alert('error' + message);
        }
    });

}

在警报的错误功能中,我使用了未定义的参数'message'。当我删除'message'参数时。

还在国际资源管理器中运行页面而不是Chrome 问题解决了。