0

我在 jquery 的 for 循环中使用 $.ajax。

for(var i=0; i < 2; 1++)
{

$.ajax({
url :"/models/getdata"+i
dataType:"json"
success:function(data)
{
}
});

}

在 i=0 的成功函数之前;i=1 来执行此值的 ajax 请求。我希望下一次迭代需要等到当前迭代完成。

这意味着一个 ajax 请求成功完成,然后它将增加 i 值,然后开始下一次迭代。

还考虑另一种情况

function A()
{
$.ajax code

}
/////another operation

同样,这里的函数 A() 需要等到它的 ajax 发布完成。但在我的情况下,它会转到下一个代码开始执行,如何在当前函数完成之前停止进一步执行。就像 C# 中的睡眠概念

我怎样才能做到这一点 ?

谢谢,

湿婆

4

4 回答 4

3

一个简单的通用解决方案:

var i=0;
(function doOne(){
    $.ajax({
        url :"/models/getdata"+i
        dataType:"json"
        success:function(data){
            if (++i<2) doOne();
        }
    });
})();

对于第二种情况,您可以使用$.ajax 返回的延迟:

function A() {
   return $.ajax(...)
}

A().done(function(){
   // some code executed after the ajax call finished
});
于 2013-09-06T11:11:16.267 回答
0

async: false在ajax调用中设置

于 2013-09-06T11:10:53.080 回答
0

此方法可能是处理此问题的最佳方法。

$.when(*AJAX CALL*)
    .then(function() { // Function to run after ajax is completed
});
于 2017-11-29T07:02:26.987 回答
-1

默认情况下,当我们使用$.ajax. 我的意思是异步,Web 应用程序可以向服务器(在后台)发送数据和从服务器检索数据,而不会干扰现有页面的显示和行为。但是您希望在您的请求完成之前停止执行,因此设置async为“false”。

用这个 -

$.ajax({
    url :"/models/getdata"+i
    dataType:"json",
    async: false,
    success:function(data)
    {
    }
 });
于 2013-09-06T11:11:52.180 回答