jQuery $。当总是失败时:什么是$。当寻找确定成功/失败的时候?

时间:2011-11-09 17:04:05

标签: ajax jquery http-status-codes jquery-deferred

我需要链接2个帖子的结果并开始使用在http://api.jquery.com/jQuery.when/找到的延迟样本

var successFunction = function (event) { alert(event.readyState);  };
var failedFunction = function (event) { alert(event.readyState); };
$.when($.ajax("/page1.php", type: 'POST'), $.ajax("/page2.php", type: 'POST'))
  .then(successFunction , failedFunction );

就我而言,即使事件对象和chrome报告以下属性,failFunction也会一直触发:

readyState: 4
responseText: "OK"
status: 200
statusText: "OK"

使用以下表格时的结果相同:

$.when( $.ajax("/page1.php", type: 'POST'), $.ajax("/page2.php", type: 'POST'))
   .then(successFunction)
   .fail(failFunction);

什么是$。当寻找确定成功/失败?当readyState === 4和status === 200时,如何获取$ .when以触发successFunction?它是在寻找我不是从服务器发送的其他内容吗?

2 个答案:

答案 0 :(得分:0)

jQuery在检查ajax请求是否成功时查找以下状态代码

status >= 200 && status < 300 || status === 304   

除此之外的任何内容都将被视为不成功。

由于你有两个ajax请求,我怀疑其中一个是失败的。

尝试记录响应并查看哪个特定的响应失败。

$.when($.ajax("/page1.php", type: 'POST'), $.ajax("/page2.php", type: 'POST')).done(function(a1,  a2){
    /* arguments are [ "success", statusText, jqXHR ] */
   console.log( a1[2] ); 
   console.log( a2[2] ); 
});

答案 1 :(得分:0)

感谢您的帮助。我在每个.ajax调用中添加了一个错误:function(xhr,ajaxOptions,thrownError),这给了我更多详细信息。两者都返回相同的错误“Unexpected token O”,因为我正在返回“OK”。一旦我删除了退货,问题就消失了。没有机会尝试完成的技术,但我相信将来会有所帮助。