AJAX POST и PHP - PullRequest
       15

AJAX POST и PHP

0 голосов
/ 20 июля 2010

У меня есть AJAX-скрипт, который отправляет POST-запрос в PHP с некоторыми значениями. Когда я пытаюсь получить значения в PHP, я ничего не могу получить.

AJAX-скрипт

xmlhttp.open("POST","handle_data.php",true);
xmlhttp.setRequestHeader("Content-type","text/plain");
var cmdStr="cmd1=Commanda&cmd2=Command2";
xmlhttp.send(cmdStr);
alert(xmlhttp.responseText); 

PHP-скрипт

<?php
  echo $_POST['cmd1'];
?>

Вывод - просто пустое окно с предупреждением. Есть ли ошибка в коде?

Ответы [ 3 ]

3 голосов
/ 20 июля 2010
xmlhttp.onreadystatechange = function()
{
    if(this.readyState == 4 && this.status == 200)
    {
        if(this.responseText != null)
        {
            alert(this.responseText);
        }
    };
}

Вам нужно дождаться получения данных, используйте onreadystatechange для делегирования обратного вызова.

http://www.w3.org/TR/XMLHttpRequest/

1 голос
/ 20 июля 2010

Я не знаю, требуется ли это, но вы можете использовать application/x-www-form-urlencoded в качестве заголовка запроса.

0 голосов
/ 20 июля 2010

Вы не должны получать ответ сразу после отправки запроса.Причина в том, что A в Ajax означает Асинхронный, и это означает, что браузер не будет ждать завершения вашего XMLHttpRequest, прежде чем он продолжит выполнять ваш код JavaScript.

Вместо этого вы должны написать обратный вызов, который выполняется толькокогда ответ полностью готов.Как раз перед вашим xmlhttp.send(cmdStr); вызовом добавьте:

xmlhttp.onreadystatechange = function()
{
    if (this.readyState == 4 && this.status == 200)
    {
        // This line is from your example's alert output
        alert(this.responseText);
    }
}
...