2013-04-04 61 views
0

如何中止上傳特定文件!我將jqXHR附加到上下文的data屬性,然後調用abourtUpload函數來搜索data屬性,然後嘗試中止它!但它不工作!取消單獨使用jquery fileupload上傳

function abortUpload (e) {  
    e.preventDefault(); 
    var template = $(e.currentTarget).closest('.template-upload'), 
    data = template.data('data') || {}; 
    console.log(data); // returns [Object object] 
    data.jqXHR.abort(); // Cannot call method 'abort' of undefined 
} 
// Method of fileupload 
add: function(e, data) { 
     data.context = $(tmpl("template-upload", file)).attr('data-data', { jqXHR: data.submit() }); 
     $('#fileupload').append(data.context); 
     data.context.find('.cancel').click(abortUpload); 
     return data.submit(); 
    } 

任何想法的傢伙? 米格爾。

回答

0

您正試圖將jqXHR對象存儲爲HTML數據屬性值,這是不可能的。
只能將對象存儲在可以序列化爲JSON的HTML數據屬性中。

你可以做的是使用jQuery的.data()方法來存儲值,它允許存儲任意對象。

但是,由於所有的代碼都採用相同的方法,因此只需使用本地變量訪問jqXHR對象並取消上載,就不需要執行任何操作。
您也不需要設置data.context,因爲這僅用於設置jQuery.ajax請求的上下文。

因此,下面的片段應該可以幫助您去:

var jqXHR = data.submit(), 
    node = $(tmpl("template-upload", file)).appendTo('#fileupload'); 
node.find('.cancel').click(function (e) { 
    e.preventDefault(); 
    jqXHR.abort(); 
}); 
+0

非常感謝S,現在很明顯,唯一的問題是我是否應該重視創建data.context因此新節點元素我可以在progress方法中使用它來構建添加的每個新文件的新進度條。我真的很感謝你的回答。謝謝! – 2013-04-05 11:23:36

+0

Ey @Sebastian Tschan我認爲我應該使用data.context,否則進度方法將無法正常工作,如果我在add方法中使用data.submit,則進度方法工作正常,但中止nop!你知道爲什麼進度條在以下代碼中不起作用嗎? http://dl.dropbox.com/u/9831004/data-context.png 謝謝你的任何想法。 M. – 2013-04-05 20:27:47

+0

最後,我想通過創建一個開始觸發器並在點擊時提交數據來得到它!謝謝塞巴斯蒂安! – 2013-04-06 06:44:55