Почему моя форма отправляется дважды?
Так что по какой-то причине моя форма отправляется два раза одним нажатием кнопки. Я впервые использую плагин jquery Form, и я предполагаю, что jquery отправляется один раз, и форма также "естественным образом" отправляет. Я видел, что средство состоит в том, чтобы прикрепить "return false" к обработчику события onSubmit формы. Я думал, что делаю это, но, очевидно, это не работает.
Кто-нибудь может помочь?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>User form entry </title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="jquery.validate.js"></script>
<script src="jquery.passwordStrength.js"></script>
<script src="jquery.form.js"></script>
<script>
$(document).ready(function() {
$('#signupForm').ajaxForm(function() {
var queryString = $('#signupForm').formSerialize();
$.post('process.php', queryString);
});
});
</script>
</head>
<body>
<form id="signupForm" action="process.php" onsubmit="return false" method="post">
<fieldset class="password">
... form goes here
<button type="submit" name="formSubmit" value="submit">Click to submit</button>
</form>
<div id="results"></div>
</body>
</html>
Я попытался добавить onsubmit = "return false" к элементу формы, но тогда у меня вообще нет представления. Я также попытался добавить "вернуть ложь"; на jQuery, но тогда у меня все еще есть двойные представления. Что мне не хватает? Похоже, что это стандартная методология для сайта jQuery Form Plugin. Чем отличается моя форма?
(Между прочим, просто чтобы прояснить. Я не говорю о проблеме наличия нескольких последовательных отправок формы путем повторного нажатия кнопки. Моя проблема заключается в том, что "одна кнопка отправки нажимает = две отправки".)
4 ответа
$('#signupForm').ajaxForm(function() {
var queryString = $('#signupForm').formSerialize();
$.post('process.php', queryString);
});
Это подает его дважды.... ajaxForm
метод один раз, а затем post()
второй раз
ajaxForm
метод обрабатывает форму ввода для вас... вам не нужно добавлять post()
метод... функция внутри ajaxForm
это обратный вызов, выполненный в случае успеха...
$('#signupForm').ajaxForm(function() {
alert("Thank you for your comment!");
});
этот код будет показывать предупреждение после успешной публикации... простой пример здесь -> http://jquery.malsup.com/form/
Вы также должны удалить onsubmit
атрибут из формы...
Обновить
Если вы хотите показать результаты... сделайте это так:
$(document).ready(function() {
$('#signupForm').ajaxForm({ target: '#results' });
// this will output the responseText from the submitted form to the target DOM element
});
Избегать использования
<button type="submit" name="formSubmit" value="submit">
поэтому, естественно, ваша кнопка отправки выполнит одну отправку, а jquery - другую отправку.
использовать этот
<input type="button" name="formSubmit" value="submit">