2015-02-11 3 views
0

Сценарий:Ajax с PHP, получив статус 200, но readyState 0

function ajaxHandler() { 
    var xmlhttp; 
    try { // Opera 8.0+, Firefox, Safari 
     xmlhttp = new XMLHttpRequest(); 

    } catch (e) { // Internet Explorer Browsers 
    try { 
     alert("paososdao"); 
     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch (e) { 
     try{ 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch (e) { // Something went wrong 
     alert("Your browser broke!"); 
     return false; 
     } 
    } 
} 
    xmlhttp.onreadystatechange = useHttpResponse(); 
    xmlhttp.open("GET","prova.php",true); 
    xmlhttp.send(null); 

    function useHttpResponse(){ 
     if (xmlhttp.readyState < 4)       // while waiting response from server 
      document.getElementById('test').innerHTML = "Loading..."; 
     else if (xmlhttp.readyState === 4) {    
      if (xmlhttp.status == 200 && xmlhttp.status < 300) 
       document.getElementById('test').innerHTML = xmlhttp.responseText; 

     } 
    } 
} 

Я пытаюсь использовать его с помощью XAMPP и я всегда получаю readyState = 0 и никакого ответа от prova.php, но если я открываю консоль разработчика в Chrome, я вижу, что статус запроса GET равен 200. В чем проблема.

+1

Как выглядит ответ? Вы можете получить доступ к нему с помощью инструментов Chrome dev. –

ответ

0

Попробуйте это:

xmlhttp.onreadystatechange = useHttpResponse; 

Вы звоните в useHttpResponse, прежде чем это необходимо.

+0

Спасибо большое! Оно работает! Я не понял, что использование функции useHttpResponse() вместо «useHttpResponse» должно немедленно вызвать функцию. – PaulRox

+0

добро пожаловать;) –

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