2014-04-11 5 views
4

blueimp의 jQuery 파일 업로드에 대한 오류 처리를 구현하려고합니다. 서버에서 잡을 수있는 오류를 구현하여 JSON 객체로 쉽게 래핑 할 수 있습니다. 그러나 서버에 PHP 오류가있어 메시지가 표준 -PPM 메시지로 표시되면 어떻게 될까요? 나는 페일 콜백을 처리하기 위해 시도 : 제대로 작동하지만 이미지를 제거하려면 취소 버튼을 누르면 콜백도 해고jQuery 파일 업로드 : 서버 오류 처리

jQuery('#fileupload').fileupload({ 
    fail: function (ev, data) { 
     if (data.jqXHR) { 
      alert('Server-error:\n\n' + data.jqXHR.responseText); 
     } 
    }, 
    otherOptions 
}); 

. 그래서 data.jqXHR과 함께 if를 추가하여 서버 오류와 cancel-button-press 사이의 차이점을 찾아 냈습니다. 그러나 취소 버튼을 누르면 더 이상 목록에서 이미지가 제거되지 않습니다.

예기치 않은 서버 오류에 대해 이러한 오류 처리를 구현하는 방법은 무엇입니까?

감사합니다. Ben

답변

3

답변을 찾았습니다. 오류 기능을 직접 덮어 쓰는 대신

.bind('fileuploadfail', function (e, data) { 

을 사용해야했습니다.

+1

또는 .on ('fileuploadfail', function (e, data) { – yar1

1

질문자가 제공 한 대답이 저에게 효과적이지 않았습니다. 변수를 사용하여 실패가 사용자에 의해 트리거되었는지 여부를 나타냅니다.

add: function (e, data) { 
     if (data.autoUpload || (data.autoUpload !== false && $(this).fileupload('option', 'autoUpload'))) { 
      $.each(data.files, function (index, file) { 
       // UPLOAD INDICATOR 
       // file heading 
       single_upload = "<b class='file_upload'>"+file.name+"</b>"; 
       // cancel btn 
       single_upload += "<a class='remove_upload'> || Cancel!</a>"; 
       // contain 
       single_upload = "<div class='upload'>"+single_upload+"</div>"; 
       // create and display node related to specific upload 
       data.context = $(single_upload).appendTo(document.body); 

       // CANCEL BTN LISTENER 
       $(data.context).find(".remove_upload").click(function() { 
        // prevent displaying of server error 
        // (prevent fileupload "fail" event trigger) 
        fileupload_userCancelledUpload = true; 
        jqXHR.abort(); 
        data.context.remove(); 
       }) 
      }); 
      var jqXHR; 
      data.process().done(function() { 
       jqXHR = data.submit(); 
      }); 
     } 
    }, 

fail: function (e, data) { 
     if (!fileupload_userCancelledUpload) { 
      // catches server errors (not validation errors), such as 413 
      handleUploadFailure(data.context, " Server error: "+$(data.jqXHR.responseText).filter("title").text()); 
     } 
     fileupload_userCancelledUpload = false; 
    } 
+0

답변은 수락 된 것이어야합니다. –