2013-04-04 6 views
0

Как я могу отменить загрузку конкретного файла! Я прикрепляю jqXHR к атрибуту данных контекста, а затем вызываю функцию abourtUpload, которая ищет атрибут данных, а затем пытаюсь ее прервать! Но это не работает!Отменить загрузку индивидуально с помощью 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- данных значения атрибута, которое не возможно.
Вы можете хранить объекты только в атрибутах данных HTML, которые могут быть сериализованы как JSON.

Что вы можете сделать, это использовать метод 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 так Я могу использовать его в методе прогресса для создания новой панели прогресса каждого добавленного файла. Я очень ценю ваш ответ «Человек». Спасибо! –

+0

Ey @Sebastian Tschan Я думаю, что я должен использовать data.context иначе метод прогресса не будет работать propertly, если я использую data.submit в методе добавления метод прогресс работает хорошо, но преждевременное прекращение NOP! Вы знаете, почему индикатор прогресса не работает должным образом в следующем коде? http://dl.dropbox.com/u/9831004/data-context.png Спасибо за любую идею. M. –

+0

Наконец-то, я думаю, что получил его, создав триггер запуска и отправив данные при нажатии! Спасибо, Себастьян! –

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