Вот моя ситуация. У меня есть страница администрирования фотографий, которая включает 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