1

我有 3 个文件fileNum1.phpfileNum2.phpfileNum3.php.

fileNum1.php文件调用fileNum2.php文件:

    if (window.XMLHttpRequest)
    {
        // code for IE7+, Firefox, Chrome, Opera, Safari 
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        // code for IE6, IE5 
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET","fileNum2.php",false);
    xmlhttp.send(); 

fileNum2.php呼吁fileNum3.php

    if (window.XMLHttpRequest)
    {
        // code for IE7+, Firefox, Chrome, Opera, Safari 
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        // code for IE6, IE5 
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET","fileNum3.php",false);
    xmlhttp.send(); 

调用fileNum3.php不工作!问题是什么?(可能是因为我已经new XMLHttpRequest在现有的内部开始了XMLHttpRequest吗?)

4

1 回答 1

0

JavaScript 是客户端代码。这意味着需要浏览器来解释和执行 JavaScript 代码。

如果您fileNum1.php通过浏览器访问,调用fileNum2.php将执行,因为 JavaScript forfileNum1.php被解释。

来自fileNum2.phpto的调用fileNum3.php不会执行,因为它不会返回给浏览器。第三个文件中的 JavaScript 将作为输出返回到发出请求的服务器,并且 JavaScript 永远不会返回浏览器。

如果你想从一个动作fileNum3.php返回到fileNum1.php,你必须在fileNum3.php被调用时捕获数据fileNum2.php,然后将响应返回到fileNum1.php

或者,您可以以正确的方式进行操作,并说如果fileNum1.php调用fileNum2.php并且一切正常,然后调用fileNum3.php

if (window.XMLHttpRequest)
{
    // code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest();
}
else
{
    // code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","fileNum2.php",false);
xmlhttp.send(); 

if(xmlhttp.responseText !== "undefined"){
    if (window.XMLHttpRequest)
    {
        // code for IE7+, Firefox, Chrome, Opera, Safari 
        xmlhttp2=new XMLHttpRequest();
    }
    else
    {
        // code for IE6, IE5 
        xmlhttp2=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp2.open("GET","fileNum3.php",false);
    xmlhttp2.send(); 
}
于 2012-07-24T18:16:35.413 回答