【发布时间】:2012-10-03 11:49:30
【问题描述】:
我正在使用以下代码来处理多个这样的 ajax 请求:
请求 1 开始 |请求 1 完成 |请求2开始 |请求 2 完成 | ...
这是代码:
var startingpoint = fireRequest(1);
$.each(types,function(ix,type)
{
startingpoint = startingpoint.pipe( function()
{
alert(startingpoint.status); // undefined
return fireRequest(type);
});
});
fireRequest 只是一个返回 $.ajax(...) 的正确 ajax 函数的 switchcase
我希望在一个请求失败时停止链条。我开始实现它,作为测试,我想提醒 ajax 对象的状态,但它显示“未定义”。如何获取状态?
【问题讨论】:
-
这听起来可能很傻,但你为什么不把你的 AJAX 调用设置为
async: false(取消 AJAX 中的 A)?还是我把你的问题弄错了? -
如果我输入 'Async: false',它的行为确实和这里一样,但是当 1 失败时如何停止请求呢?我觉得我的问题中的代码更正确
-
您可以简单地拥有一个包含您刚刚处理的请求的数组。如果成功则继续下一项,如果呼叫失败则中断。尽管如此,我同意非异步 AJAX 毫无意义。你看过 $.when 了吗?
-
是的。这是一个简洁的功能,但在 .when() 中我无法从之前的通话结果中看到状态。也许我做错了,因此我的问题:)
标签: jquery ajax jquery-deferred