2016-07-07 3 views
2

Я делаю запрос AJAX GET с использованием jQuery в файл PHP. Я хочу, чтобы PHP-скрипт возвращал объект JSON, однако в настоящее время он возвращает строку JSON. Я понимаю, что могу использовать JSON.parse в коде jQuery, однако любой опыт, который я получаю при вызове AJAX API, возвращает объект JSON. Я пытаюсь сделать то же самое с php-скриптом, но он возвращает строку, а не объект.Возвращает объект JSON из сценария php

Кто-нибудь знает, что такое лучшая практика здесь, и если наилучшей практикой является возвращение объекта JSON, как я буду делать это с помощью PHP?

Пожалуйста, смотрите код ниже:

JS

$.get('test.php', function(data){ 
    console.log((data)); 
}); 

PHP

<?php 

$jsonAnswer = array('test' => 'true'); 
echo json_encode($jsonAnswer); 
+0

В чем проблема с 'JSON.parse'? Вероятно, существует некоторый метод jQuery, который автоматически анализирует ответ, что может быть тем, о чем вы думаете. – gcampbell

+0

его не то, что есть проблема с 'JSON.parse', но я просто хочу знать, могу ли я сделать эту серверную сторону, чтобы в браузере был получен правильный формат. Имеет ли это смысл? –

+0

Вы можете отправлять строки только через Интернет. – gcampbell

ответ

5

В файле PHP, изменить тип содержимого application/json.

JS

$.get('/process.php', function(data) {  
    console.log(data); 
}); 

PHP

<?php 

    header("Content-type: application/json"); 

    $jsonAnswer = array('test' => 'true'); 
    echo json_encode($jsonAnswer); 

Затем консоль должна прочитать Object {test: "true"}, а не только строки JSON.

+0

вот что я искал –

2

Добавить JSON в конце вашей функции ПОЛУЧИТЬ вернуть JSon

$.get('test.php', function(data){ 
    console.log((data)); 
},'json');//here 

и/или добавить этот заголовок в PHP

header('Content-Type: application/json'); 

подробнее here

+2

[$ .getJSON()] (http://api.jquery.com/jquery.getJSON/) – Andreas

+0

get, getjson, ajax такой же предмет – madalinivascu

+0

@madalinivascu нет нет такой же предмет. – Jai

0

Без изменения PHP скрипт, который вы можете сделать:

$.get("test.php", function(data) { 
var arr = $.parseJSON(data); 
console.log(arr); 
alert(arr.test); 
});