4

我想知道为什么这段代码可以在 firefox、chrome 和 IE10 上运行,但不能在 IE9 上运行

var ajaxReq = new XMLHttpRequest();
var params = "name="+$('#name').val()
var url = "register.php";

ajaxReq.open("POST", url, true);                               

ajaxReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");    
ajaxReq.setRequestHeader("Content-length",params.length);
ajaxReq.setRequestHeader("Connection", "close"); 

ajaxReq.onreadystatechange = function(){
 if(ajaxReq.readyState == 4 && ajaxReq.status == 200) 
{alert(ajaxReq.response)} //<---this results undefined

 }

php 文件中包含的代码本身并不重要,因为为了做一些证明,我租用的代码非常少:

header('Content-Type: text/json');
echo 'response';
exit;
4

1 回答 1

5

而不是.response,它应该是.responseText.responseXML- 请参阅HTTP 响应。在您的情况下,我认为更改为alert(ajaxReq.responseText);将解决它。

response不是 XMLHttpRequest 对象的属性,这就是 JavaScript 引擎抛出undefined错误的原因。

从上述文档中:

responseText 将包含符合用户代理的纯文本服务器响应

所以responseText用于纯文本中的所有内容,除了XML, 其中包括JSON, 因为这是纯文本格式。

于 2013-06-03T08:47:48.053 回答