jQuery的等待,直到异步Ajax调用完成jQuery、Ajax

由网友(心疼.)分享简介:您好我有我的剧本2 Ajax调用,我需要他们asnyc运行在闲暇之余,但我还需要第二次等待,直到第一个完成。 Hi I have 2 ajax calls in my script, I need them run asnyc to spare time, but I need the second to wait...

您好我有我的剧本2 Ajax调用,我需要他们asnyc运行在闲暇之余,但我还需要第二次等待,直到第一个完成。

Hi I have 2 ajax calls in my script, I need them run asnyc to spare time, but I need the second to wait until the first is finished.

$.ajax({
        type: "POST",
        url: "getText.asmx/ws_getText",
        data: parO1,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            alert(msg.d.data);
        }
        , error: function () {
            chyba("chyba v požadavku", "df");
        }
    });
    if (parO2.length > 0) {
        $.ajax({
            type: "POST",
            url: "getText.asmx/ws_getText",
            data: parO2,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                /*WAIT UNTIL THE FIRST CALL IS FINISHED AND THAN DO SOMETHING*/
            }
        , error: function () {
            chyba("chyba v požadavku", "df");
        }
        });

因此​​,任何想法?谢谢

So any ideas? Thanks

推荐答案

如果使用jQuery 1.5 +,你可以用 jQuery.when() 做到这一点。喜欢的东西(简称为简便起见,Ajax调用,只需把该对象为你做以上)

If using jQuery 1.5+, you can use jQuery.when() to accomplish this. Something like (shortened the ajax calls for brevity, just pass the objects as you're doing above)

$.when($.ajax("getText.asmx/ws_getText"), 
       $.ajax("getText.asmx/ws_getText")).done(function(a1,  a2){

   // a1 and a2 are arguments resolved for the 
   // first and second ajax requests, respectively
   var jqXHR = a1[2]; // arguments are [ "success", statusText, jqXHR ]
});

您不知道以何种顺序,他们将返回,所以如果你是手工轧制这一点,你需要检查的其他请求的状态,并等待,直到它回来了。

You don't know in which order they will return so if you were rolling this by hand, you would need to check the state of the other request and wait until it has returned.

阅读全文

相关推荐

最新文章