2013-01-23 100 views
4

我修改了jQuery文件上傳的示例代碼Wiki我的腳本適用於add回調,但不是done回調。服務器正確地獲取帖子並返回一個JSON響應。jQuery文件上傳完成功能

我注意到在源代碼中有些回調被註釋掉了。我不知道我是否應該取消註釋。或者使用回調fileuploaddone但刪除評論無效。

不知道如果我正確地做到這一點。我希望服務器向我返回一個描述我剛剛上傳的圖像的JSON對象,以便表單的下一步可以將圖像與backbone.js模型鏈接起來。

<form id="uploadform"> 
    <input id="fileupload" type="file" name="imagefile" data-url="imagefiles" multiple> 
    <button type="#" class="btn btn-primary uploadfile" style="display: none">Upload</button> 
    <div id="progress"> 
     <div class="bar" style="width: 0%;"></div> 
    </div>  
</form> 
<script> 
$(function() { 
    $('#fileupload').fileupload({ 
     dataType: 'json', 
     done: function (e, data) {    
     data.context = $('.uploadfile').css('display','none') 
      utils.addValidationSuccess('Added file: ' + data.jqXHR.name); 
     }, 
     progressall: function (e, data) { 
      var progress = parseInt(data.loaded/data.total * 100, 10); 
      $('#progress .bar').css(
       'width', 
       progress + '%' 
      ); 
     }, 
     add: function (e, data) { 
      console.log('added'); 
      data.context = $('.uploadfile') 
       .css('display','block') 
       .click(function() { 
        utils.showAlert('Uploading','...', 'alert-warning'); 
        data.submit(); 
       }); 
     } 
    }); 
}); 
</script> 
+1

如果你告訴我們更多關於什麼錯誤,消息或其他你正在經歷的事情,而不是僅僅說「它不起作用」,它可能會有所幫助;) –

+0

你的服務器返回給你一個json對象還是你問如何做到這一點? – gmaliar

+0

完成的回調從未被調用過。根據我的控制檯沒有發生javascript錯誤。 – PaulWoodIII

回答

2

什麼東西了使用上提交jquery.ajax的明顯回調本土工作,調整後的代碼如下所示。

<div class="row-fluid"> 
    <form id="uploadform"> 
     <input id="fileupload" type="file" name="imagefile" data-url="imagefiles" multiple> 
     <button type="#" class="btn btn-primary uploadfile" style="display: none">Upload</button> 
     <div id="progress"> 
      <div class="bar" style="width: 0%;"></div> 
     </div>  
    </form> 
    <script> 
    $(function() { 
     $('#fileupload').fileupload({ 
      dataType: 'json', 
      progressall: function (e, data) { 
       var progress = parseInt(data.loaded/data.total * 100, 10); 
       $('#progress .bar').css(
        'width', 
        progress + '%' 
       ); 
      }, 
      add: function (e, data) { 
       console.log('added'); 
       data.context = $('.uploadfile') 
        .css('display','block') 
        .click(function() { 
         utils.showAlert('Uploading','...', 'alert-warning'); 
         var jqXHR = data.submit() 
          .success(function (result, textStatus, jqXHR) { 
           console.log('Done'); 

           console.log('e:' + e); 
           console.log('results:' + result); 
           console.log('results.id:' + result.id); 
           console.log('textStatus:' + textStatus);    
           console.log('jqXHR:' + jqXHR); 

           data.context = $('.uploadfile').css('display','none') 
           utils.showAlert('Success','the file uploaded successfully','alert-success'); 
           // utils.addValidationSuccess('Added file: ' + data.jqXHR.name); 
          }) 
          .error(function (jqXHR, textStatus, errorThrown){ 
           utils.showAlert('Error','...', 'alert-error'); 
          }); 
        }); 
      } 
     }); 
    }); 
    </script> 
</div> 
0

我對這段代碼有同樣的問題。

$(function() { 
    $('#fileupload').fileupload({ 
     dataType: 'json', 
     done: function (e, data) { 
       alert("done"); 
     }  
    }); 
}); 

只是沒有設定具體的數據類型,現在執行完成回調... 下面的代碼只是工作...

$(function() { 
    $('#fileupload').fileupload({ 
      done: function (e, data) { 
        alert("done"); 
     }  
    }); 
}); 

服務器返回一些JSON。