json возвращает данные, не работающие в IE или Chrome - PullRequest
1 голос
/ 01 февраля 2012

У меня проблемы с возвратом данных JSON после использования Uploadify.

Этот код работает в Firefox, но не в IE 9 или Google Chrome.
Это скрипт для Uploadify:

     jQuery("#uploadify_gallery").uploadify({
        'queueID'        : 'fileQueue',
        'uploader'       : siteURL + '/wp-content/plugins/uploadify/uploadify.swf',
        'script'         : siteURL + '/wp-content/plugins/uploadify/uploadify_gallery.php',
        'fileExt'        : '*.jpg;*.jpeg;*.png',
        'auto'           : true,
        'multi'          : true,
        'method'         : 'POST',
        'buttonImg'      : siteURL + '/wp-content/themes/storelocator/img/buttons/img_upload_grey_bg.png',
        'cancelImg'      : siteURL + '/wp-content/plugins/uploadify/cancel.png',
        'queueSizeLimit' : 20,
        'scriptData'     : {'entity':jQuery('#entity').val(),'entity_id':jQuery('#entity_id').val()},
        'onComplete'     : function(event, queueID, fileObj, response, data) {

          alert('test'); // <-- THIS WORKS 

          //This makes the json response readable
          var result = eval("(" + response + ")");
          alert(result.toSource()); // <-- this never fires
        },
      });

Это код, который я тестирую в uploadify_gallery.php:

$res = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($res);

Это сработало вчера, и у меня это работает на

Любые предложения о том, как я могу сделать эту работу?

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Проверьте значение, возвращаемое сервером, и убедитесь, что оно является допустимым JSON (например, используя JSONLint ).

После этого вы можете использовать jQuery.parseJSON() для преобразования строки ответа в объект.

0 голосов
/ 01 февраля 2012

Eval ();не очень хороший выбор, он считается довольно плохим, так как он не будет работать в Internet Explorer, по крайней мере, в старых.Проверьте это

Как я могу заставить этот вызов eval () работать в IE?

http://24ways.org/2005/dont-be-eval

Вы получите ответкак объект json, так что вместо eval, просто переберите его с каждым

$(response).each(function(index, value) {
    console.log(value);
});

Для получения дополнительной информации о каждом, посмотрите http://api.jquery.com/each/

...