JQuery ajax()完成/失败回调在状态200时未返回

JQuery ajax() done / fail callbacks not returning upon status 200

本文关键字:状态 200时 返回 回调 失败 ajax 完成 JQuery      更新时间:2023-09-26

我正试图使用JQuery将表单数据发布到远程servlet。我可以看到服务器接收数据,还返回状态代码200和"{result:‘success’}"的响应字符串但是ajax调用不会返回done或fail函数(如果我添加了一个always函数,我可以看到它正在被调用)以下是客户端的代码片段:

`

var dataParams = 'email='+email+'&password='+password;
var url = 'http://127.0.0.1:8888/signup';
var jxhr = $.ajax({
  type : "POST",
  url : url,
  data : dataParams,// serializes the form's elements.
  dataType: "json",
  done: function() {
     console.log("done!");
     hideSignUp();
     showThankYou(); },
  fail: function() {
     console.log("fail!");
      }
  });

`

我好像错过了什么,但似乎找不到什么。请注意,我使用的是JQuery 1.8.3,因此不赞成使用成功。有什么想法吗?

尝试:

var url = "http://127.0.0.1:8888/signup";
var jxhr = $.ajax({
  type : "POST",
  url : url,
  data : dataParams,// serializes the form's elements.
  dataType: "json"
  }).done(function() {
     console.log("done!");
     hideSignUp();
     showThankYou(); 
  }).fail(function(jqXHR, textStatus) {
     console.log(textStatus);
});

尝试链接回调,而不是将它们设置为对象字段:

 $.ajax({
  type : "POST",
  url : url,
  data : dataParams,// serializes the form's elements.
  dataType: "json"
  }).done(function (xhrResponse) {
    console.log("done!");
    hideSignUp();
    showThankYou();
  }).fail(function (xhrResponse, textStatus) {
    console.log(textStatus);
  }).always( function () {
    console.log("I'm done with this.");
  });

通过链接您的回调,您可以保证至少执行一个(完整的)回调。