2013-12-19 106 views
1

你好,我有这样的如何处理两个ajax请求?

$(document).ready(function() { 

    $("#ctl00_txtsearch").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
      // Here is the code of autocomplete which is requesting 
      // data and binding as autocomplete 
      }); 
     }); 
}); 
     var aa=bindonload(); 
    }); 

这里顺序是,我想在页面加载调用另一个函数

function bindonload() { 
    $.get("minicart.aspx#mydatacontent", function(data) { 
     var resourceContent = data;  
     var mini=$(resourceContent).find('div#pnlminicart'); 
     $('#smallcart').html(mini); 
    }); 
    return false; 
} 

所以,我的实际问题是,当页面加载 首先

bindonload()

调用,然后自动完成如果文本框有一些值的权利? 但是,当页面加载,突然我开始写入自动完成文本框,然后直到bindlonload函数得到执行 autocomplete将无法正常工作。

我不知道如何处理它,我已经使用异步:真,但其没有工作,我不想等待第二个进程提前

谢谢....

+0

变种AA = bindonload();这当然是不正确的。方法调用中不能有var。 –

+0

我有@JernejNovak它的工作好,你是否建议做其他事情? –

+0

对不起。现在看起来确定。 –

回答

2

呃..我猜...应该是..你loaddata()不应该花太多时间来加载。

如果有什么方法可以优化,请看。

如果Ajax请求对其他的依赖,那么你就不能使它平行

如果你真的打算做平行Ajax请求,你必须使用以下内容:

$.when($.ajax("URL1"), $.ajax("URL2")) 
    .then(myFunc, myFailure); 

希望它可以帮助..

注:Ajax调用不应依赖

更新:

$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1, a2) 
{ 

    // a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively. 
    // Each argument is an array with the following structure: 
    [ data, statusText, jqXHR ] 
    var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It" if (/Whip It/.test(data)) { alert("We got what we came for!"); 
}}); 

在上述例子中,可以看到两个AJAX请求执行并行

两个请求被完成之后,即在两种功能sucess,正在执行添加操作

同样,你可以与你与loaddata()然后

$.ajax("page2.php")更换$.ajax("/page1.php") 0。

他们都将执行部件并联

+0

不错的一个,但我已经使用它,我忘记只添加它不工作 –

+0

你能给我一个例子吗? –

+0

@ dholakiyaankit ..看到我更新的答案.. –