Возвращаете JSON из PHP в JavaScript? - PullRequest
126 голосов
/ 25 марта 2009

У меня есть PHP-скрипт, который вызывается через jQuery AJAX. Я хочу, чтобы PHP-скрипт возвращал данные в формате JSON в javascript. Вот псевдокод в скрипте PHP:

$json = "{";
foreach($result as $addr)
{
    foreach($addr as $line)
    {
        $json .= $line . "\n";
    }
    $json .= "\n\n";
}
$json .= "}";

По сути, мне нужно, чтобы результаты двух циклов for были вставлены в $ json.

Ответы [ 6 ]

187 голосов
/ 25 марта 2009

Php имеет встроенную функцию сериализации JSON.

json_encode

json_encode

Пожалуйста, используйте это, если можете и не страдайте синдромом «Не изобретено здесь».

124 голосов
/ 01 июля 2015

Вот пара вещей, отсутствующих в предыдущих ответах:

  1. Установить заголовок в вашем PHP:

    header('Content-type: application/json');
    echo json_encode($array);
    
  2. json_encode() может вернуть массив JavaScript вместо JavaScript object , см .:
    Возвращение JSON из скрипта PHP
    Это может быть важно знать в некоторых случаях, так как массивы и объекты не совпадают.

82 голосов
/ 25 марта 2009

В документации PHP есть раздел JSON . Вам понадобится PHP 5.2.0, хотя.

Начиная с PHP 5.2.0, расширение JSON связывается и компилируется в PHP по умолчанию.

Если вы этого не сделаете, вот библиотеку PECL , которую вы можете установить.

<?php
    $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

    echo json_encode($arr); // {"a":1,"b":2,"c":3,"d":4,"e":5}
?>
13 голосов
/ 25 марта 2009

Обычно вам будет интересно иметь некоторую структуру ваших данных на стороне получателя:

json_encode($result)

Это сохранит и ключи массива.

Помните, что json_encode работает только с данными, кодированными в utf8.

4 голосов
/ 30 марта 2015

Вы можете использовать Простой JSON для PHP . Он отправляет заголовки, которые помогут вам создать JSON.

Похоже:

<?php
// Include the json class
include('includes/json.php');

// Then create the PHP-Json Object to suits your needs

// Set a variable ; var name = {}
$Json = new json('var', 'name'); 
// Fire a callback ; callback({});
$Json = new json('callback', 'name'); 
// Just send a raw JSON ; {}
$Json = new json();

// Build data
$object = new stdClass();
$object->test = 'OK';
$arraytest = array('1','2','3');
$jsonOnly = '{"Hello" : "darling"}';

// Add some content
$Json->add('width', '565px');
$Json->add('You are logged IN');
$Json->add('An_Object', $object);
$Json->add("An_Array",$arraytest);
$Json->add("A_Json",$jsonOnly);

// Finally, send the JSON.

$Json->send();
?>
0 голосов
/ 31 октября 2018

$ msg = "Вы ввели неверное имя пользователя или пароль"; $ Responso = json_encode ($ MSG);

echo "{\"status\" : \"400\", \"responce\" : \"603\", \"message\" : \"You Enter Wrong Username OR Password\", \"feed\":".str_replace("<p>","",$responso). "}";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...