Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-返回(xmlhttp.responseText)不工作_Javascript_Xml - Fatal编程技术网

Javascript-返回(xmlhttp.responseText)不工作

Javascript-返回(xmlhttp.responseText)不工作,javascript,xml,Javascript,Xml,有人能告诉我为什么这不起作用吗? 出于某种原因,我需要更多的文本来编写这段代码。。。我真的看不出这对任何人都有什么好处,但不管怎样,我有更多的文字 这: if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXOb

有人能告诉我为什么这不起作用吗? 出于某种原因,我需要更多的文本来编写这段代码。。。我真的看不出这对任何人都有什么好处,但不管怎样,我有更多的文字

这:

if (window.XMLHttpRequest)
   {// code for IE7+, Firefox, Chrome, Opera, Safari
   xmlhttp=new XMLHttpRequest();
   }
 else
   {// code for IE6, IE5
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
 xmlhttp.onreadystatechange=function()
   {
   if (xmlhttp.readyState==4 && xmlhttp.status==200)

    {
        alert("rS4Xs200");
    var string33 = xmlhttp.responseText;
    //document.write(xmlhttp.responseText);
            return(string33);

    }
  }
  var urlToGet = 'd2/two.php';
  alert(urlToGet);
xmlhttp.open("GET",urlToGet,true);
xmlhttp.send();

}
返回:

undefined
它显示为“undefined”的原因是AJAX请求是异步的,因此您的脚本调用AJAXrequestDLC()函数并最终发送xmlHttpp请求,但在启动onreadystatechange函数之前,它会转到包含该函数调用的write命令(因为尚未返回响应)。您可以通过将代码更改为以下内容来验证这一点:

function runAJAX2() {
var result = AJAXrequestDLC();
alert('boom');
document.write(result);
}
您会注意到,“boom”警报出现在代码中onreadystatechange函数中的警报之前,这表明脚本在等待PHP文件的响应时已经移动

编辑:这个答案重写了两次,我仍然有点困惑,所以这里有一个替代的解释:

  • 调用函数runAJAX()
  • write(AJAXrequestDLC());调用AJAXrequestDLC()函数
  • 在AJAXrequestDLC函数中,发送xmlHTTP请求
  • 此时,程序流返回document.write命令,该命令写入AJAXrequestDLC()的当前值(未定义)
  • 几微秒后,php脚本将返回响应,并触发xmlhttp.onreadystatechange事件,调用内联函数。但是,由于程序流已向前移动,因此return语句无效

  • 因为没有定义xmlhttp.responseText。发布您的整个xhr代码。可能还有适用的服务器代码整个脚本:使用提供的代码,我看不出有问题。但是可以使用的代码非常有限。您可以尝试使用我知道可以使用的代码,但是没有更多信息,包括服务器预期返回的内容。我不知道知道我是否可以提供更多帮助。
    d2/two.php
    返回的数据的MIME类型是什么?它是
    text/plain
    ?我不能延迟脚本执行,直到xmlresponse被填满吗?你可以,但这样做的缺点是,由于某种原因,你的php脚本需要很长时间来响应你的脚本(和浏览器)但是,如果你想这样做,这是一个很好的解释:这不是一个php脚本,而是一个html页面:)ajax调用就是它的全部功能,所以我怀疑它可能需要太长时间才能响应。谢谢:)这正是我想要的