Javascript AJAX请求响应文本在Chrome中为空?
我试图使最简单的AJAX请求成为可能,出于某种原因(出乎意料地)它可以在IE中工作,但不能在Chrome中工作 代码如下:Javascript AJAX请求响应文本在Chrome中为空?,javascript,php,jquery,ajax,google-chrome,Javascript,Php,Jquery,Ajax,Google Chrome,我试图使最简单的AJAX请求成为可能,出于某种原因(出乎意料地)它可以在IE中工作,但不能在Chrome中工作 代码如下: var x = new XMLHttpRequest(); x.open("GET","style.php",true); x.send(); alert(x.responseText); 最后一行只会弹出一个空的“警报”窗口 PHP代码: <?php header("Content-Type: text/plain"); echo "
var x = new XMLHttpRequest();
x.open("GET","style.php",true);
x.send();
alert(x.responseText);
最后一行只会弹出一个空的“警报”窗口
PHP代码:
<?php
header("Content-Type: text/plain");
echo "HELLO"; ?>
有人建议我把文本/普通标题放在代码之前,但没有用。Chrome中的JS控制台显示状态为200,接收状态为800B,所以脚本接收到响应,但没有看到
非常感谢您,XMLHttpRequest是一个异步函数 您应该这样做:
var x = new XMLHttpRequest();
x.open("GET","style.php",true);
x.send();
x.onreadystatechange = function(response) {
alert (response.responseText);
};
因为它是异步的!复制警报的代码并粘贴到下一行,然后重试*头脑发热*
警报(x.responseText);警报(x.responseText)
@KevinB唯一有效的原因是请求完成得很快,因此当您完成对第一个警报单击“确定”时,请求已经完成,响应文本现在可用。但是,您并不希望您的代码依赖于方便的计时。谢谢,但我得到了“未定义”的响应。无法找出原因。@user3104270我也有同样的问题,不知道如何解决:(几乎但不完全如此。当readyState发生更改时,onreadystatechange处理程序将被多次调用-仅当this.readyState==4
请求完成时。此外,处理程序的第一个参数不是响应,而是事件-您应该参考this
,这将是XMLHttpRequest实例把它们放在一起,处理程序函数应该类似于function(){if(this.readyState==4){alert(this.responseText);}}