0

特定のファイルのアップロードを中止するにはどうすればよいですか? jqXHR をコンテキストのデータ属性にアタッチしてから、データ属性を検索して中止しようとする abourtUpload 関数を呼び出します。しかし、それは機能していません!

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(); 
  }

アイデアはありますか?ミゲル。

4

1 に答える 1

0

jqXHR オブジェクトを HTML データ属性値として保存しようとしていますが、これは不可能です。
オブジェクトは、JSON としてシリアル化できる HTML データ属性にのみ格納できます。

できることは、jQuery の .data() メソッドを使用して値を保存することです。これにより、任意のオブジェクトを保存できます。

ただし、すべてのコードが同じメソッド内にあるため、ローカル変数を使用して jqXHR オブジェクトにアクセスし、アップロードをキャンセルできるため、これを行う必要はありません。
これは jQuery.ajax リクエストのコンテキストを設定するためにのみ使用されるため、data.context を設定する必要もありません。

したがって、次のスニペットが役立つはずです。

var jqXHR = data.submit(),
    node = $(tmpl("template-upload", file)).appendTo('#fileupload');
node.find('.cancel').click(function (e) {
    e.preventDefault();
    jqXHR.abort();
});
于 2013-04-05T09:41:11.917 に答える