#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';
}