Обычно возврата false достаточно для предотвращения отправки формы, поэтому дважды проверьте свой код. Должно быть что-то вроде этого
$('form[name="formi"]').submit(function() {
$.ajax(...); // do your ajax call here
return false; // this prevent form submission
});
Обновление
Вот полный ответ на ваш комментарий
Я попробовал это, но это не сработало. Мне нужно представить данные в части успеха, нет?
Может быть, это зависит от вашей логики и ваших точных потребностей. Обычно, чтобы выполнить то, о чем вы просите, я использую jQuery Form Plugin , который очень хорошо справляется с подобным поведением.
Из вашего комментария я вижу, что вы не отправляете саму форму с помощью вызова $.ajax
, но извлекаете какие-то данные из этого вызова, не так ли? Тогда у вас есть два варианта:
С простым jQuery (без плагина формы)
$('form[name="formi"]').submit(function() {
$.ajax(...); // your existing ajax call
// this will post the form using ajax
$.post($(this).attr('action'), { /* pass here form data */ }, function(data) {
// here you have server response from form submission in data
})
// this prevent form submission
return false;
});
С плагином формы это то же самое, но вам не нужно обрабатывать извлечение данных формы (прокомментированная часть выше) и возвращать false, потому что плагин обрабатывает это для вас. Код будет
$(document).ready(function() {
// bind 'myForm' and provide a simple callback function
$(form[name="formi"]).ajaxForm(function() {
// this call back is executed when the form is submitted with success
$.ajax(...); // your existing ajax call
});
});
Вот и все. Имейте в виду, что с помощью приведенного выше кода ваш существующий ajax-вызов будет выполнен после отправки формы. Так что, если это проблема для вас, вы должны изменить приведенный выше код и использовать альтернативный вызов ajaxForm
, который принимает опциональный объект . Таким образом, приведенный выше код может быть переписан как
$(document).ready(function() {
// bind 'myForm' and provide a simple callback function
$(form[name="formi"]).ajaxForm({
beforeSubmit: function() { $.ajax(...); /* your existing ajax call */},
success: function(data) { /* handle form success here if you need that */ }
});
});