0

我有一个简单的 ajax 发布到服务器..

$(".invite-team-members-submit-btn").click(function() {
  $.post("invite_team_member", { 
    token: $("#token").val(), 
    email: $("#email").val(), 
    team: $("#team").val() 
  },"json")
    .done(function (responseText) {
      alert(responseText.response);
    })
    .fail(function (xhr,status,message) { alert("ERROR: " + message); })
    .then(function () { alert("Something should happen."); });
});

返回的 JSON 看起来像这样......

{"response":"Person has been invited."}

我在控制台中的响应标题看起来像这样......

Response Headers
  Cache-Control max-age=0, private, must-revalidate
  Connection    close
  Content-Type  application/json; charset=utf-8
  Date  Wed, 22 May 2013 21:45:07 GMT
  Etag  "e5b5e12acbcc78372b2a861027b66c05"
  Status    200 OK
  Transfer-Encoding chunked
  X-Request-Id  d835ce021eff7733d67ebfcdd468bdf2
  X-Runtime 0.007909
  x-ua-compatible   IE=Edge

我的控制台不仅告诉我我收到了 200 状态,而且我的响应包括我想要的 JSON。但是,在处理解析的 JSON 时,不会发出警报。请注意,我没有收到任何警报,甚至来自 then 函数。这可能是什么原因造成的?

4

1 回答 1

1

这很可能是由于 jQuery 在成功回调之前自动为您解析 json。要使这种情况始终发生,以便您可以始终如一地期待它,请使用以下命令:

$(".invite-team-members-submit-btn").click(function() {
  $.post("invite_team_member", { 
    token: $("#token").val(), 
    email: $("#email").val(), 
    team: $("#team").val() 
  },"json")
    .done(function (responseText) {
      alert(responseText.response);
    })
    .fail(function (xhr,status,message) { alert("ERROR: " + message); })
    .then(function () { alert("Something should happen."); });
});

注意第"json"2 行末尾的参数

更新在制作,和无效;的末尾有一个。固定在上面的代码中。$.post().done.fail.then

如果您仍然没有看到完成警报或失败警报,那么您的控制台中有错误,或者单击事件一开始就没有发生。如果使用 Firefox,请确保您也在使用 firebug。如果在 IE 中测试,请尝试其他浏览器。

于 2013-05-22T22:04:32.210 回答