Jquery Ajax нет ответа

#php #javascript #jquery

#php #javascript #jquery

Вопрос:

Когда я пытаюсь получить ответ из файла php с помощью Jquery ajax, я просто получаю (an empty string) (Accdg. к консоли Firebug с помощью console.log(data) )

Вот Html-код:

 <form action="test.php" method="POST" id="ajax">
    <input type="text" name="field" />
    <input type="submit" value="submit" name="submit" />
</form>
  

Вот код Jquery:

 $('#ajax').submit(function(e) {
    e.preventDefault();

    $.ajax({
       type: 'POST',
       data: $(this).serialize(),
       url: 'test.php',
       cache: false,
       success: function(data) {
           alert(data); 
       }
    });

    return false;
});
  

И PHP-код:

 if ($_POST['submit'] == "submit") 
{
    echo 'Got your request';
} 
  

Просто базовый. Что меня расстраивает, так это то, что это просто, я провел некоторые исследования, и все равно это не работает. Я также хочу, чтобы это было как можно проще.

Пожалуйста, просветите меня.

Комментарии:

1. существует вероятность того, что интерпретатор не вводит if блок

2. можете ли вы подтвердить, что $(this).serialize() это действительно дает вам правильные данные?

3. Вы пробовали делать стандартное сообщение и посмотреть, получите ли вы ожидаемый ответ.

4. когда выполняется ajax, проверьте в firebug, что params отправляется…

Ответ №1:

Не проверяйте, находитесь ли вы в ситуации POST, проверяя имена полей. Это неверно — вы можете изменить имена форм на стороне клиента и забыть обновить проверку PHP.

100% надежный метод заключается в использовании:

 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    echo "Got your request";
}
  

Однако, поскольку вы просто хотите узнать, был ли сервер вообще пропингован вашим ajax-вызовом, почему бы не сделать:

 <?php

echo "Got your ", $_SERVER['REQUEST_METHOD'], " request";
  

Который просто вернет Got your POST request или Got your GET request и т. Д…

Кроме того, проверьте журнал вашего сервера (или используйте вкладку HTTPFOX / Firebug Net и т. Д.), Чтобы узнать, действительно ли этот запрос ajax отправляется и принимается сервером.

Ответ №2:

Проблема с serialize() методом заключается в том, что он не включает имя параметра button, который вы используете в своем php-скрипте ( submit=submit параметр). Он этого не делает, потому что не знает, какая кнопка была нажата. Этот параметр включается браузером только при обычной отправке формы.

Таким образом, одна из возможностей — вручную присоединить этот параметр в качестве параметра строки запроса:

 url: 'test.php?submit=submit',
  

и в вашем PHP-скрипте:

 if ($_GET['submit'] == "submit") 
{
    echo 'Got your request';
}