2013-06-03 2 views
4

я хотел бы знать, по какой причине этот код работает на Firefox, Chrome и IE10, но не в IE9XMLHttpRequest возвращается всегда неопределенные в 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

Вместо '.response', это должно быть' .responseText' или '.responseXML' - см. [HTTP-ответ] (http://en.wikipedia.org/wiki/XMLHttpRequest#The_HTTP_response) – andyb

+0

wow это сработало! Но могу ли я использовать responseText в случае, если я получу объекты кодирования JSON? – Sonia

+0

Да, поскольку 'JSON' является форматом _plain text_. Я добавил это как ответ с более длинным описанием. – andyb

ответ

5

Вместо .response, он должен быть .responseText или .responseXML - см HTTP response. В вашем случае я предполагаю, что изменение на alert(ajaxReq.responseText); исправит это.

response не является объектом объекта XMLHttpRequest, поэтому механизм JavaScript бросает ошибку undefined.

Из вышеуказанной документации:

responseText будет содержать ответ сервера в виде обычного текста с помощью соответствующего требованиям агента пользователя

так использовать responseText для всего в виде обычного текста, кроме XML, который включает JSON, так как это простой текст формат.

Смежные вопросы