uploadify + ответ jQuery 1.4 пуст после загрузкиComplete
Вопрос
Я использую uploadify с jquery 1.4 для загрузки изображений.В php-скрипте, который загружает файлы, мы печатаем это:
$json_response['status'] = "true";
$json_response['file'] = $_FILES;
echo Zend_Json_Encoder::encode($json_response);
В javascript мы делаем (вкратце):
$('#images_upload_file').uploadify({
onComplete: function(event, queueID, fileObj, response, data) {
console.log("upload complete");
console.log(response);
«ответ» всегда пуст, несмотря ни на что.Событие, идентификатор очереди, fileObj и данные заполнены правильно.Кто-нибудь знает, как это исправить?
Дайте мне знать, если вам нужна дополнительная информация.ПС:наш код отлично загружает изображения, просто ответ все время пуст, так как мы обновились до jquery 1.4
Решение
Я всегда использую json2.js
для обработки любых данных JSON.В этой библиотеке есть механизм безопасности на случай, если данные не в правильном формате JSON.Вы можете получить его от http://json.org, обязательно скачайте js-файл, а не используйте его напрямую с их сайта.
Мой код всегда выглядит так:
onComplete : function (event, queueID, fileObj, response, data) {
//process response
try {
var r = JSON.parse(response);
//process the JSON data, ex
console.log(r.status);
}
catch(e) {
//not json or bad format, do something about it
alert("cannot parse data as json!");
}
}
Причина, по которой я использую json2.js
потому что мой php-скрипт имеет проверку сеанса и будет перенаправляться, если сеанс не будет принят.Это делается перед входом на страницу с использованием модуля фильтра, поэтому я не могу проверить, является ли это запросом AJAX или обычным доступом к странице.Если требуемый сеанс не удовлетворяет правилу страницы, он немедленно перенаправится и вернет полную веб-страницу.
Это приведет к тому, что ответ будет не в допустимом формате JSON.С использованием json2.js
я справлюсь с этим catch
заблокируйте, затем выполните другое действие, например, перезагрузив текущую страницу.Это просто то, что я всегда использую и всегда работает на меня.
К вашему сведению, json2.js
не требуется и вообще не связан с jQuery.
Другие советы
Включен ли error_reporting в PHP-скрипте?
Может ли это быть фатальная ошибка (например.потому что он не может загрузить класс Zend_Json_Encoder), который не выводится из-за error_reporting
параметр?