0

首先我加载 php 页面,然后是一个 java 函数调用来自 JAVA 脚本的第一个 AJAX 请求,它调用第二个 php 并发布一些变量并操作函数一个......意味着第一个 AJAX 请求仍在工作......

现在,第二个 php 中的函数调用另一个 JAVA 脚本,该脚本创建另一个 AJAX 请求,该请求调用第三个 php,为 MAP API 生成 XML 数据......意味着第二个 AJAX 请求......但它失败了,因为第一个请求仍未完成...... .我该如何处理?哪个 AJAX 调用 php 和那个 php 调用第二个 AJAX 请求?...

请帮我....

根据您的示例查看我的要求,因为我的代码太长,无法按照堆栈格式在此处发布和格式化

首先,我直接在浏览器中加载 ajax1.php。

现在我调用第一个 AJAX 请求

$.ajax('/ajax2.php', function(data2){
// But the ajax2.php having Call another AJAX request for ajax3.php which retrive XML Data genereted from mysql and create Google MAP
    $.ajax('/ajax3.php', function(data3){
       // I need to display the ajax2.php Generated MAP to DIV created by ajax1.php
     // Whene I call ajax2.php directy from browser url it AJAX ajax3.php runs and gerete MAP perfectly
     // But I call ajax2.php through ajax1.php AJAX request it dosen't create the ajax3.php AJAX request 
    });
});

简而言之,我调用第一个 AJAX 请求,但第一个 AJAX 请求调用另一个第二个 AJAX 请求。它生成 MAP。

document.getElementById("ntfs").innerHTML=xmlhttp.responseText;
// This above code is not working but I write like

document.write(xmlhttp.responseText);
//This above Code works perfect, but it create new document I can't fill to DIV.innerHTML

为什么?发生这种情况?

4

1 回答 1

0

与往常一样,如果您发布一些自己的代码,帮助您会容易得多。我将使用 jquery。

您需要了解 ajax 是异步的。IDE 不会等待 ajax 调用完成以执行下一行代码。如果您想让 ajax1 在完成时调用 ajax2,并在完成时让 ajax2 调用 ajax3,则需要使用ajax 技术的finished:or处理程序。complete:在jquery中它看起来像这样......

$.ajax('/ajax1.php', function(data1){
    $.ajax('/ajax2.php', function(data2){
        $.ajax('/ajax3.php', function(data3){
            //All 3 ajax calls are done, in order
        });
    });
});

alert('the first ajax call was made and is probably still executing');

例如,如果您希望 ajax1 和 ajax2 同时运行,并在完成后让 ajax2 调用 ajax3,它会如下所示...

$.ajax('/ajax1.php', function(data1){
    //ajax1 call is done
});

$.ajax('/ajax2.php', function(data2){
    //ajax2 is done
    $.ajax('/ajax3.php', function(data3){
        //ajax2 and ajax3 calls are done, in order
    });
});

alert('the first 2 ajax call were made and are probably still executing');

补充阅读: 异步与同步

于 2012-04-04T17:17:13.793 回答