У меня есть форма, когда человек нажимает кнопку «Отправить», а Ajax уволен, а e.preventDefault();
используется, чтобы форма фактически не отправлялась.JavaScript/jQuery Приостановить функцию, а затем запустить ее снова
Моя проблема: я хочу, чтобы форма была отправлена на сервер, но только после того, как Ajax вернулся с успехом.
Так как пример я пытаюсь достичь следующий сценарий:
- Пользователь нажимает кнопку «Отправить»
- Ajax обжигают посылая некоторую информацию, и пользователь остается на странице.
- Ajax вернулся, и теперь мы можем запустить функцию
success:
. - Устранена функция успеха, и
form data
на сайте отправляется на сервер.
HTML-:
<form name="demoFiler" action="save/uploadCreate.php" method="POST" enctype="multipart/form-data">
//Some inputs, checkboxes radios etc.
<input type="submit" name="submitHandler" id="submitHandler" value="Upload" class="buttonUpload hideButton" />
</form>
Javascript:
document.getElementById(this.config.form).addEventListener("submit", submitMe, false);
function submitMe(e){
e.stopPropagation(); e.preventDefault();
//Necessary vars for the 'data' defined here
$.ajax({
type:"POST",
url:this.config.uploadUrl,
data:data,
cache: false,
contentType: false,
processData: false,
success:function(rponse){
//This is where we need our Success function to SUBMIT the form using uploadCreate.php
}
});
}
Это действительно не правильный способ сделать что-то. Попросите вызов AJAX выполнить всю работу формы или вернуть ошибки. Если возврат указывает, что POST был успешным, вы можете перезагрузить страницу до того, что будет целью формы. Приостановка браузера с синхронным вызовом AJAX возможна, но в целом считается ужасным пользователем. – Pointy
Хм, так просто отправляйте все через Ajax или uploadCreate.php, а не частично через один или другой? – user1775598
Да. Другой вариант - забыть AJAX и просто отправить форму. Таким образом, вы выполняете только один HTTP-запрос в любом случае, а не 2, когда вам это удастся. Обратите внимание, что рискованно полагаться на статус действительности данных формы, которые остаются действительными между двумя отдельными HTTP-запросами. – Pointy