ColdFusion AJAX JQuery файл загрузки не работает - PullRequest
2 голосов
/ 07 августа 2011

Вот моя ситуация. У меня есть страница администрирования фотографий, которая включает 1) шаблон загрузки фотографий 2) шаблон сведений о фотографиях 3) шаблон избранных фотографий 4) фотогалерею и 5) динамическую навигационную панель. Первоначально шаблон загрузки фотографий был настроен как форма, которая отправлялась сама себе и использовала cffile для загрузки новой фотографии. Это работало хорошо, пока я не попытался добавить обратные вызовы jquery, чтобы обновить детали, избранные фотографии и контейнеры галереи при успешной загрузке - но я обнаружил, что после отправки формы и загрузки фотографии все остальные функции, которые я прикрепляю к отправке формы кнопка не работает.

Из-за этого я решил изменить кнопку отправки на тип "button" и использовать jquery .ajax () для загрузки файла, чтобы я мог добавить свои обратные вызовы в случае успеха. Мой код для метода ajax до сих пор:

$.ajax({
            url: 'Administration/PhotoManagement/uploadPhotos.cfm',
            type: 'POST',           
            data: { Add: 'add',
                NewFilename: file_name,
                shortName: short_name,
                description: description
            },
            contentType: 'multipart/form-data',
            success: function(response, status, xhr){
                    $('#upload').html(response);
                    // refresh gallery, featured pic, details
                    alert('success');
                }
            },
            error: function(xhr, status){
                alert(status + ' ' + xhr.statusText);
            }           
        });

При отправке я получаю 500 внутренних ошибок сервера. Консоль Firebug сообщает, что данные были отправлены правильно, но изображение не загружается, и я не получаю сообщение об ошибке из кода ошибки try / catch, который у меня есть вокруг файла.

Я не женат ни на одном из подходов - я бы хорошо вернулся к первоначальному подходу, если бы мог заставить работать обратные вызовы. Какие-либо предложения? Если вы думаете, что мне следует придерживаться подхода AJAX, что бы вы посоветовали мне исправить мои ошибки?

Редактировать: в приведенном выше коде я добавил тип: multipart / form data, потому что я получал ошибку из моего блока try / catch вокруг тега:

Неверный тип содержимого: application / x-www-form-urlencoded; кодировка = UTF-8

1 Ответ

2 голосов
/ 24 августа 2011

Я немного опоздал на вечеринку, но я уже использовал это как загрузчик файлов AJAX с использованием coldfusion:

http://valums.com/ajax-upload/

Когда вы загружаете пакет, появляетсяпример использования coldfusion.

В файле javascript есть функция, у которой есть метод обратного вызова с именем 'onComplete' (Поиск qq.FileUploaderBasic).В этом методе обратного вызова вызовите свою собственную функцию обратного вызова, например:

onComplete: function(id, fileName, responseJSON)
    {
        uploaderCallBackFunction(id, fileName, responseJSON);
    },

Где uploaderCallBackFunction - это функция, которую я написал.Вы можете передать JSON из CFC в функцию обратного вызова, если хотите.

...