Почему моя форма отправляется дважды? - PullRequest
9 голосов
/ 16 февраля 2012

ТАК по какой-то причине моя форма отправляется два раза одним нажатием кнопки. Я впервые использую плагин 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. Чем отличается моя форма?

(Между прочим, просто чтобы прояснить. Я не говорю о проблеме множественных последовательных отправок формы путем многократного нажатия кнопки. Моя проблема заключается в том, что «одна кнопка отправки - две отправки».)

Ответы [ 4 ]

20 голосов
/ 16 февраля 2012
$('#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
});
0 голосов
/ 16 февраля 2012

Попробуйте использовать это:

onsubmit="void(0);"
0 голосов
/ 16 февраля 2012

избегать использования

<button type="submit" name="formSubmit" value="submit">

поэтому, естественно, ваша кнопка отправки сделает одну отправку, а ваш jquery сделает еще одну отправку

используйте это

<input type="button" name="formSubmit" value="submit">
0 голосов
/ 16 февраля 2012

Не используйте кнопку submit.Используйте обычную кнопку.

...