XMLHttpRequest在IE9中返回始终未定义

时间:2013-06-03 08:23:40

标签: php ajax internet-explorer jquery

我想知道这个代码在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;

1 个答案:

答案 0 :(得分:5)

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

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

从上述文件:

  

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

因此responseText除了XML(包括JSON之外)的纯文本中使用{{1}},因为这是纯文本格式。