Ajax терпит неудачу при вызове внутри функции

Когда я вызываю Ajax в основной части кода Jquery, он возвращает правильный результат, но когда я вызываю его изнутри функции, он терпит неудачу. Вот код на стороне сервера:

    <?php
$what       = $_POST["what"];
$where      = $_POST["where"];

if(isset($what)){
$data = array(
"what"      => $what,
"where"     => $where,
);
echo json_encode($data);
}
?>

1

Решение

Вероятно, причина того, что вы не видите текст в браузере, заключается в том, что вы отправляете форму и не блокируете действие по умолчанию при отправке формы. Это приведет к отправке вызова ajax, но затем страница немедленно перезагрузится, и результат вызова ajax не будет отображен.

Чтобы это исправить, вы бы позвонили e.preventDefault() в вашем обработчике событий.

function get_click(e) {
e.preventDefault();
$.ajax({
url: "test.php",
type: "POST",
data: {what : what, where : where},
dataType: "json",
success: function (data) {
$("#result1").text(JSON.stringify(data));
},
error: function (error) {
alert("ajax error " + JSON.stringify(error));
}
});
}

И добавьте параметр события в ваш HTML:

   <form onsubmit="get_click(event)">
<input type="submit">
</form>

Рабочая демонстрация: https://jsfiddle.net/jfriend00/841v9rpf/. Если вы удалите e.preventDefault() из демо, то форма отправляет.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]