Отправка в две конечные точки
Я бы попробовал что-то подобное вместо использования async: true
. Хотя это заметно сложнее, он не заморозил бы интерфейс.
$(document).ready(function(){
// Handle Form-Submission
$("#mainForm").submit(function(e){
e.preventDefault();
var $form = $(this);
if($form.data('submitting')) return; // Avoid double submissions
$(':submit').attr('disabled','disabled'); // Disable the submit button
// Reset Error Array
errors = new Array();
/* Validation Code Removed - Not Relevant */
// Check if errors exist
if (errors.length > 0) {;
$(':submit').removeAttr('disabled'); // Enable the submit button
return false;
} else {
$("div.errors").html("");
$form.data('submitting',true); // Flag that a submission has started
$.post("post.php",{
"First Name":name_first.val(),
"Last Name":name_last.val(),
"Home State":home_state.val(),
"Primary Email":email_primary.val()},
function(){
// remove our special handler and submit normally
$form.unbind('submit').submit();
}
);
}
});
});
Оригинальный ответ
Похоже, что вы зависаете в том, что вы хотите использовать $.post
, если JavaScript включен, но пусть форма работает нормально с отключенным JavaScript.
Однако, поскольку ни один из ваших JavaScript не будет работать, если он отключен , вам не нужно беспокоиться об изменении поведения в функции submit
.
Вы можете просто оставить заявление return false;
, или использовать
$("#mainForm").submit(function(e){
// all your existing code
e.preventDefault();
}
Это будет препятствовать отправке формы в обычном режиме и вместо этого будет использовать ваш метод $.post
, когда JavaScript включен . Если оно отключено , оно будет отправлено нормально.
preventDefault
предпочтительнее, чем return false
, если вы хотите, чтобы всплывающее окно событий продолжалось как обычно, но не позволяло продолжению действия браузера по умолчанию. return false
эквивалентно звонку e.preventDefault(); e.stopPropagation();