Есть пара вещей, которые вы можете сделать.
Сделать AJAX синхронным
Так как $.post
есть, согласно документации , эквивалентно
$.ajax({
type: 'POST',
url: url,
data: data,
success: success
dataType: dataType
});
Вы можете просто заменить $.post
эквивалентным вызовом $.ajax
, а также добавить async: false
к опциям. Это отправит форму с AJAX, а затем, из-за return true;
из функции, также позволит браузеру опубликовать форму в обычном режиме.
Отправка формы только после завершения AJAX
Это включает в себя некоторые манипуляции с обработчиками событий:
// attach submit event handler to the form
$("#myform").submit(function() {
// Handler immediately detaches itself, so that
// we don't have an infinite loop when we call
// $(this).submit() ourselves below
$(this).unbind('submit');
// Do the AJAX
$.post(
'/update_point_session/',
{session: true},
function(data){
// When the AJAX completes, tell the browser
// to re-submit the form
$(this).submit();
}
);
// Prevent the browser from submitting it NOW,
// because the AJAX is still running
return false;
});