2012-06-05 3 views
1

Я отправляю форму через 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/

ответ

1

Проблема была:

async:false, 

Удаление, что решается проблема.

3
$(document).live("submit", "form", function(){ 

Должно быть :

$(document).on("submit", "form", function(){ 

Или еще лучше:

$("#static-container-Id").on("submit", "form", function(){ 

Если вы хотите использовать live (JQuery < 1.4.4)

$("form").live("submit", function(){ 
+0

Ах да, я хотел использовать '.on', проблема все еще сохраняется. – Dan

+0

@ Silver89. Ну, вот здесь вы решили решить одну проблему. Боюсь, я должен уйти с клавиатуры. Надеюсь, вы ответите на другие проблемы. Удачи! – gdoron

Смежные вопросы