uploadify + ответ jQuery 1.4 пуст после загрузкиComplete

StackOverflow https://stackoverflow.com/questions/2079066

  •  21-09-2019
  •  | 
  •  

Вопрос

Я использую 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 параметр?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top