Я отправляю форму через ajax и пытаюсь обновить простой индикатор выполнения во время его загрузки. Подача формы работает отлично, но я не могу заставить индикатор выполнения обновить или даже запросить текущую загруженную сумму.Ошибка выполнения функции представления формы Ajax?
<form enctype="multipart/form-data">
<input name="file" type="file" />
<button>Update Account</button>
</form>
<progress value="0" max="100"></progress>
JQuery + Ajax
$(document).on("submit", "form", function(){
var formData = new FormData($('form')[0]);
$.ajax({
url: window.location.pathname,
type: 'POST',
xhr: function() {
myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){
myXhr.upload.addEventListener('progress', progressHandlingFunction, false);
}
return myXhr;
},
async:false,
data: formData,
cache: false,
contentType: false,
processData: false
});
});
После отправки формы необходимо запустить addEventListener
так, что эта функция выполняется для обновления прогресса:
function progressHandlingFunction(e){
if(e.lengthComputable){
$("progress").attr('value', e.loaded);
$("progress").attr('max', e.total);
}
}
но любые функции внутри myXhr.upload.addEventListener();
просто кажется, не бегают?
myXhr.upload.addEventListener('progress', alert("test"), false);
работает отлично, но ниже не работает, почему бы это случилось ?:
myXhr.upload.addEventListener('progress', function(){alert("test")}, false);
Этот пример использует аналогичную кодировку:
http://www.matlus.com/html5-file-upload-with-progress/
Ах да, я хотел использовать '.on', проблема все еще сохраняется. – Dan
@ Silver89. Ну, вот здесь вы решили решить одну проблему. Боюсь, я должен уйти с клавиатуры. Надеюсь, вы ответите на другие проблемы. Удачи! – gdoron