2013-06-28 2 views
0

Я написал следующий код в своем home.php. Функция login() вызывается нажатием кнопки отправки.Нужна помощь, чтобы поймать ответ AJAX

function login() 
    { 
    try{ 
     xmlHttp=new XMLHttpRequest(); 
    }catch(e){ 
     try{ 
     xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    }catch(e2){ 
     try{ 
     xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
     }catch(e3){ 

     alert('Sorry ! AJAX not supported'); 
    } 
    } 
    } 
    xmlHttp.onreadystatechange=function(){ 
     if(xmlHttp.readyState==4&&xmlHttp.status==200){ 
     alert(xmlHttp.responseText); 
     } 
    } 
    xmlHttp.open('POST','ajax_call.php',true); 
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;"); 
    xmlHttp.send(document.getElementById('username').value,document.getElementById('password').value); 
    } 
    </script> 

Мой ajax_call.php сценарий просто

<? 
echo 'hello'; 
?> 

Я не получаю предупреждение Hello .Why?

[Я пытался предупредить readyState и status

xmlHttp.onreadystatechange=function(){ 
     alert(xmlHttp.readyState+" "+xmlHttp.status); 
     if(xmlHttp.readyState==4&&xmlHttp.status==200){ 
     alert(xmlHttp.responseText); 
     } 
    } 

и получили следующие последовательно

1 0 
2 200 
3 200 
4 200 
hello 
1 0 
hello 
+0

попробуйте удалить аргументы из xmlHttp.send() – bugwheels94

+0

@Ankit: Пытался, но не помогло –

+1

Так ммм ... Разве это не значит, что ваш «Hello» показывает вверх? Это то, что должно произойти, каждый раз, когда что-то изменяется в запросе, вы получаете обновление, оно переходит от 1 200 (отправка, код состояния) до 2 200 (получено, состояние ОК) до конца 4 200 (готов с запросом, состояние ОК) и после этого вы видите «Привет», вы хотите ... Правильно? –

ответ

0
login() 
     { 
     try{ 
      xmlHttp=new XMLHttpRequest(); 
     }catch(e){ 
      try{ 
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     }catch(e2){ 
      try{ 
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
      }catch(e3){ 

      alert('Sorry ! AJAX not supported');Or 
     } 
     } 
     } 
     xmlHttp.onreadystatechange=function(){ 
      if(xmlHttp.readyState==4&&xmlHttp.status==200){ 
      alert(xmlHttp.responseText); 
      } 
     } 
     xmlHttp.open('POST','ajax_call.php',true); 
     xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");/* Anil Remove ;*/ 
     xmlHttp.send('username'.value,'password'.value);/* try static username and password*/ 
     } 
     </script>[ajax call][1] 


    [1]: http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_post2 
0

Последняя строка должна быть просто

xmlHttp.send(); 

Но л ooks, как вы хотите сделать некоторую аутентификацию ... Если это базовая аутентификация, значения должны идти в заголовке, или если это малейшая проверка подлинности сервера, это зависит от вашей реализации ... Можете ли вы объяснить, почему у вас было имя пользователя/пароль в вашем вызове xmlHttp.send()?

+0

Вот пример того, как добавить базовый заголовок аутентификации btw: http://coderseye.com/2007/how-to-do-http-basic-auth-in-ajax.html Я использовал этот учебник раньше и заставил его работать ... –

+0

: Я выбираю значения из формы входа, а затем регистрирую пользователя с помощью AJAX. Но здесь я положил «привет», чтобы проверить его. –

0

просто идея:

  • Я думаю, вы должны открытого вашего XmlHttp перед onreadystatechange!

Третий параметр .Open говорит XmlHttp огонь onreadystatechange (именно поэтому он установлен верно)

однако, если это не ошибка:

  • вы пытались this.responseText?
+0

: Я пробовал оба, но без помощи. –