jQuery не возвращает объект JSON в Firebug, когда JSON генерируется PHP - PullRequest
1 голос
/ 28 мая 2010

Содержимое test.json:

{"foo": "The quick brown fox jumps over the lazy dog.","bar": "ABCDEFG","baz": [52, 97]}

Когда я использую следующий вызов jQuery.ajax () для обработки статического JSON внутри test.json,

$.ajax({
    url: 'test.json',
    dataType: 'json',
    data: '',
    success: function(data) {
        $('.result').html('<p>' + data.foo + '</p>' + '<p>' + data.baz[1] + '</p>');
    }
});

Я получаю объект JSON, который могу просматривать в Firebug.

Однако при использовании того же вызова ajax с URL-адресом, указывающим вместо этого php-скрипт:

<?php
    $arrCoords = array('foo'=>'The quick brown fox jumps over the lazy dog.','bar'=>'ABCDEFG','baz'=>array(52,97));
    echo json_encode($arrCoords);
?>

, который печатает этот идентичный объект JSON:

{"foo":"The quick brown fox jumps over the lazy dog.","bar":"ABCDEFG","baz":[52,97]}

Я получаю правильный вывод в браузере, но Firebug показывает только HTML. При развертывании запроса GET в Firebug отсутствует вкладка JSON.

Ответы [ 2 ]

4 голосов
/ 28 мая 2010

Попробуйте

<?php
    header('Content-type: application/json');
    $arrCoords = array('foo'=>'The quick brown fox jumps over the lazy dog.','bar'=>'ABCDEFG','baz'=>array(52,97));
    echo json_encode($arrCoords);
?>
2 голосов
/ 28 мая 2010

Скорее всего, вам нужно установить заголовок типа контента:

// this is the "offical" content-type
header('Content-Type: application/json');
// or - this will probably work too
header('Content-Type: text/javascript');
...