Поразите интересную проблему сегодня при попытке загрузить файл изображения <2 МБ с помощью dojo.io.iframe.
Моя функция для обработки формы вызвана, но прежде чем форма отправляется на сервер, я получаю следующую ошибку:
TypeError: ifd.getElementsByTagName ("текстовая область") [0] не определен
Моя функция, которая привыкла к действию сообщение формы:
function uploadnewlogo(){
var logoDiv = dojo.byId('userlogo');
var logoMsg = dojo.byId('uploadmesg');
//prep the io frame to send logo data.
dojo.io.iframe.send({
url: "/users/profile/changelogo/",
method: "post",
handleAs: "text",
form: dojo.byId('logoUploadFrm'),
handle: function(data,ioArgs){
var response = dojo.fromJson(data);
if(response.status == 'success'){
//first clear the image
//dojo.style(logoDiv, "display", "none");
logoDiv.innerHTML = "";
//then we update the image
logoDiv.innerHTML = response.image;
}else if(response.status == 'error'){
logoMsg.innerHTML = data.mesg;
}else{
logoMsg.innerHTML = '<div class="error">Whoops! We can not process your image.</div>';
}
},
error: function(data, ioArgs){
logoMsg.innerHTML = '<div class="error">' + data + '</div>';
}
});
}
Форма является очень простой только с входным компонентом Файла и простой кнопкой, которая называет этот бит JavaScript и додзе.
У меня есть очень похожий код в моем приложении, которое загружает документы слова/PDF, и это не делает ошибки, но по некоторым причинам это делает.
Какие-либо идеи или указатели на том, что я должен попытаться заставить это работать без ошибок?
О, я использую php и платформу Зенда для бэкенда, если это имеет какое-либо отношение к нему, но я сомневаюсь относительно этого, поскольку это даже не поражает сервер, прежде чем это перестанет работать.
Большое спасибо,
Предоставление
Поскольку обработчик нагрузки dojo.io.iframe.send ()
был запущен, запрос должен быть отправлен на сервер и ответ вернулся. Я думаю, что ответ сервера неверен. Возможно, сервер возвращает страницу с ошибкой.
Используйте Firebug, чтобы проверить DOM текущей страницы, найти транспортный iframe, созданный Dojo, и проверить его содержимое. Firebug также может захватывать ввод-вывод iframe, проверьте его вкладку Net. Вы можете найти основную причину этой проблемы.
Вы соблюдали ограничение, записанное в документе ?
ВАЖНО: Для всех значений, ЗА ИСКЛЮЧЕНИЕМ html и xml, ответ сервера должен быть файлом HTML с элементом textarea. Данные ответа должны быть внутри элемента textarea. Использование HTML-документа - единственный надежный кроссбраузерный способ, которым этот транспорт может узнать, когда ответ загружен. Для mimetype text / html (или XML) просто верните обычный HTML / XML-документ. Другими словами, ваши службы для форматов JSON и Text должны возвращать данные в следующей упаковке: