У меня есть форма, которая загружает файл в iframe. Я хотел бы отложить его отправку, пока я не проверю, действительно ли он с помощью ajax. Как я могу это сделать ? Мой код приостанавливает отправку и возвращает результат проверки (в настоящее время это просто фиктивная функция, которая возвращает «результат»: «истина»), но тогда действие «отправить» не выполняется. Также нормально ли, что для отображения данных ответа после получения статуса ответа 200 требуется ~ 2 секунды?
Вот мой html:
Submit
Js:
$(function() {
$('#file_upload_submit').click(function(e){
e.preventDefault();
var fileUploadForm = document.getElementById('file_upload_form');
$.ajax({
type: "POST",
url: '/artifact/upload/check-form/',
data: 'foo=bar',
dataType: "json",
success: function(data){
if(data['result'] == "true"){
$("#message").show();
$("#message").fadeIn(400).html(''+data["message"]+'');
setTimeout(function(){
$("#message").fadeOut("slow", function () {
$("#message").hide();
});
}, 1500);
$('#file_upload_form').attr('target','upload_target').submit(function(){
alert('Handler for .submit() called.');
return false;
});
}
else{
$("#message").show();
$("#message").fadeIn(400).html(''+data["message"]+'');
setTimeout(function(){
$("#message").fadeOut("slow", function () {
$("#message").hide();
});
}, 1500);
return false;
}
}
});
return false;
});
});
и ссылка: http://ntt.vipserv.org/artifact/
РЕДАКТИРОВАТЬ
С помощью приведенного ниже кода я могу выполнить проверку, а затем, когда результат будет положительным, будет отправлена форма. Теперь, если я жестко запрограммировал цель для формы, мое предупреждение не отображается, и я почти уверен, что загрузка не выполняется (к сожалению, список загрузок обновляется каждые 8 часов, я буду знать, сработало ли это через какое-то время). Если цель не указана, файл загружается с перенаправлением, поэтому весь прослушиватель событий 'submit' опускается.
html:
Submit