#jquery #ajax #forms #refresh
#jquery #ajax #формы #обновить
Вопрос:
У меня есть довольно простой фрагмент кода jQuery AJAX, который должен отправлять форму без обновления страницы, но по какой-то причине он игнорируется, и форма отправляется в обычном режиме.
Код jQuery:
$(".createEvent").live('click', function() {
$(".eventResult").html($("<img/>").attr("src", "<?php echo __FULL_PATH; ?>images/loader.gif").attr("id", "loader"));
$('.eventResult').show();
var form = $(this).parents('form:first');
var eventName = $("input[name='eventName']",form).val();
var eventID = $("input[name='eventName']",form).id();
var dataString = 'eventName =' eventName;
$.ajax({
type: "POST",
url: "{site.createPageURL}" eventID "/event/",
data: dataString,
cache: false,
success: function(html) {
alert('done');
$('.eventResult').html(html);
$('.eventForm').hide();
updateBookingList(eventID);
}
});
return false;
});
и форма:
<form id="eventForm_1318915800" method="POST" action="path_here..." name="eventForm">
<label for="eventName">Please enter a name for the event</label>
<input id="1318915800" type="text" name="eventName">
<label for="submit">amp;nbsp;</label>
<input class="createEvent" type="submit" value="Create event" name="submit">
</form>
<div id="eventResult_1318915800" class="eventResult">amp;nbsp;</div>
Комментарии:
1. Пожалуйста, проверьте функцию updateBookingList (EventID) на предмет любого перенаправления или обновления.
Ответ №1:
это указывает на ошибку JS в середине, которая обходит return false
Комментарии:
1. Отлично, это именно то, что происходило. Спасибо за совет — я на самом деле не знал, что Firebug может сломаться из-за ошибок Javascript, поэтому в результате я смог подобрать очень полезный метод отладки.
Ответ №2:
Вам нужно будет добавить event.preventDefault();
перед вызовом ajax. Ваша функция должна быть изменена, как показано ниже:
$(".createEvent").live('click', function(event) {
event.preventDefault();
.
.
.
//ajaxCall
});
Комментарии:
1. Это не помешает отправке, запущенной с клавиатуры.
2. Ага. Лучше использовать $(«#eventForm_1318915800»).live(‘submit’, функция(){})
Ответ №3:
Если вы хотите остановить отправку формы, вам, вероятно, лучше сделать:
$("#eventForm_1318915800").submit(function () { return false; });
Это лучше, потому что оно также будет обрабатывать отправку, вызванную, например, клавишей Enter.