Вот мой HTMLнеобычное поведение AJAX
<form id="the_form">
Zip/Postal Code: <input id="zip" type="text" name="zip"><br/>
<input type="submit" value="Submit" id="submitButton">
</form>
<div id="output"></div>
Вот мой JQuery
<script type="text/javascript">
$("document").ready(function() {
$("#submitButton").on("click",function(){
var value_to_send_to_php = $.trim($("#zip").val());
if(value_to_send_to_php != "") {
$.post("formphptoajax_rb.php", $("#the_form").serializeArray() , function(data) {
//#1 doesn't work here
});
//#2 doesn't work here
}
//#3 doesn't work here
});
$("#output").text("success");
});
</script>
выше JQuery работает отлично. То есть, щелкнув submit
, я получаю «успешный» вывод в div
с идентификатором «output».
Что я не могу понять, так это то, почему я не получаю такой же результат, когда я размещаю $("#output").text("success");
в местах, помеченных # 1, # 2 или # 3.
В # 1 и # 2 я не получаю выход. На # 3 я получаю «успех» на долю секунды, а затем исчезает.
Потому что вы не останавливаете поведение кнопки 'submit' по умолчанию. Форма отправляется после выполнения обработчика 'click', который в этом случае совпадает с перегрузкой страницы. – Andreas
Начните смотреть на # 3, потому что если № 3 не произойдет, то остальное тоже не будет. Единственные возможные пути для # 3, чтобы не произойти, были бы, если перед этим возникла ошибка, или ваш обработчик событий никогда не вызван, что не должно быть возможным с учетом вашего кода. закомментируйте теги формы и повторите попытку, наблюдая за своей консолью. ** Моя догадка №3 происходит, вы просто этого не видите. ** –
Вам нужно «вернуть ложь»; в конце функции щелчка, чтобы предотвратить обратную передачу. И ваш вызов «$ (« # output »). Text (« success »); в том объеме, который у вас есть, это не имеет никакого смысла. Он будет вызываться всегда независимо от успеха или ошибки вызова ajax. – paYa