Перезагрузить (или повторно инициализировать) Uploadify в модальном диалоговом окне jQuery UI - PullRequest
2 голосов
/ 18 февраля 2011

Я использую Uploadify в модальном диалоговом окне jQuery UI, и я использую Ajax для отправки данных.Затем я могу повторно использовать модальное диалоговое окно, чтобы загрузить больше файлов.У меня почти все работает сейчас, но вот моя проблема.

Когда модальное окно открывается второй раз, и я добавляю файл с помощью Uploadify, он появляется дважды в очереди.Если я открою модальное окно в третий раз и добавлю файл, он появится 3 раза в очереди (и т. Д.).

Когда я закрываю модальную диалоговую форму, я использую следующий код (которыйвызывается из функции Close модального диалогового окна пользовательского интерфейса jQuery:

function DestroyUploadifyInstance(){
$('#image_nameQueue').remove();
$('#image_nameUploader').remove();
}

Когда я открываю модальную диалоговую форму, я снова вызываю код загрузки (это вызывается из функции Open пользовательского интерфейса jQueryмодальное диалоговое окно):

function CreateUploadifyInstance(){
$('#image_name').uploadify({
'uploader' : 'uploadify.swf',
'script' : 'uploadify.php',
'cancelImg' : 'cancel.png',
etc

Мне кажется, что я почти на месте, поскольку код на самом деле работает, даже если отображаются дубликаты файлов (он не загружает каждый файл несколько раз, только один раз).

Как я могу остановить отображение дублирующихся элементов очереди?Спасибо.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Uploadify связывает обработчик для события uploadifySelect с элементом, на котором вы вызываете его, который добавляет элементы очереди.Если вы не отсоедините это в DestroyUploadifyInstance, то цепочка обработчиков событий будет расти с каждым вызовом CreateUploadifyInstance, что и вызывает дубликаты.

function DestroyUploadifyInstance()
{
    $("#image_name").unbind("uploadifySelect");
    $('#image_nameQueue').remove();
    swfobject.removeSWF('image_nameUploader');
}

Это уничтожение / повторная инициализация необходима только в IEкажется, из-за того, как он обрабатывает объекты Flash, когда они скрыты, поэтому я бы сделал его зависимым от браузера и придерживался одного вызова для загрузки для FF, Chrome и т. д., без «разрушения» при каждом закрытии диалога.

1 голос
/ 04 февраля 2012

вы можете использовать uploadifySettings ()

var news_id = $(this).attr('news_id');
$("#image_name").uploadifySettings('script', 'http://example.com/upload.php?news=' + news_id);
...