3

我读过类似问题的类似问题,但我读到的每条建议对我来说似乎效率低下。这是 ajax 调用(我使用的是 Jquery 1.9.1):

$( document ).ajaxError(function() {
 alert( "AJAX ERROR" );
});

$.post( "/lists/complete", { itemID:id }, function(answer) {
  alert("SUCCESS");
}, "text" ).fail( function() {
  alert("ERROR");
}).always( function() { 
  alert("DONE");
});

在服务器端,请求按预期接收。如果我在客户端监控服务器响应(使用 Firebug),我可以看到服务器发送 200 响应以及正文中的正确数据。但是,永远不会触发任何警报!

我该怎么做才能理解这个问题?我必须补充一点,我对 JS 和 Jquery 的经验很少......

4

2 回答 2

3

我也不是 jquery post 的粉丝。我更喜欢使用 $.ajax。但是,建议链接完成、失败和始终。

$.ajax({
  url: ' yoururl ',
  type: 'POST',
 // dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)',
  data: {param1: 'value1'},
})
.done(function() {
  console.log("success");
})
.fail(function() {
  console.log("error");
})
.always(function() {
  console.log("complete");
});

http://api.jquery.com/jQuery.ajax/

弃用通知: jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调自 jQuery 1.8 起已弃用。要为最终删除准备代码,请改用 jqXHR.done()、jqXHR.fail() 和 jqXHR.always()。

于 2013-09-24T09:10:32.350 回答
0

我从来都不是 $.post 的粉丝,我宁愿使用完整的 ajax 调用:

$.ajax({
  type: 'POST',
  url: '/lists/complete',
  data: data,
  success: function(data){
    alert("SUCCESS");
  },
  error: function(xhr, type, exception) { 
    // if ajax fails display error alert
    alert("ajax error response type "+type);
  }
});

试一试,如果警报响起,请告诉我。如果这不起作用,请打开控制台(firebug ...)并转到网络选项卡,将其清除并发送您的请求。

点击请求,检查headers和response是否正常。

于 2013-09-24T09:00:05.420 回答