发布到Jersey POST方法的jQuery帖子返回405错误但该方法已执行

时间:2013-01-30 19:58:07

标签: jquery ajax post jersey

我的网页上有以下javascript代码,它接受JSON输入并将其发布到服务器:

$('form').submit(function (e) {
    e.preventDefault();
    $.ajax({
        type:'POST',
        url:$(this).attr('action'),
        data:$("#json").val(),
        success:function (data, textStatus, jqXHR) {
            alert('Successfull!');
        },
        error:function (jqXHR, textStatus, errorThrown) {
            alert('Error ' + errorThrown);
        },
        contentType:"application/json",
        dataType:'html'
    });
});

服务器端POST方法如下所示:

@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response run(final Foo foo) {
    if(someCondition(foo)){
        return Response.status(Response.Status.ACCEPTED).build();
    }else{
        return Response.status(Response.Status.BAD_REQUEST).build();
    }
}

当我从网页提交表单并且方法验证失败并返回BAD_REQUEST时,JS方法会警告正确的错误输出。但是,如果POST方法返回ACCEPTED响应,那么我会在Web控制台调试器no element found中获得成功警报以及HTML错误页面,页面中的文本为“HTTP状态405 - 方法不允许”。

之前以前工作正常,但我更新到jQuery到1.9.0版本,并开始收到此错误。如果我让客户端调用POST方法,那么我也没有错误。那么这里的问题是什么?如果我将dataType:'html'更改为dataType:'json',那么我开始收到JSON.parse - unexpected end of input错误,即使POST方法正确执行,我得到的警报也来自错误块。

0 个答案:

没有答案