Возвращение JSON из PHP в JavaScript?
У меня есть php скрипт, который вызывается через jQuery AJAX. Я хочу, чтобы PHP-скрипт возвращал данные в формате JSON в javascript. Вот псевдокод в PHP скрипте:
$json = "{";
foreach($result as $addr)
{
foreach($addr as $line)
{
$json .= $line . "n";
}
$json .= "nn";
}
$json .= "}";
в принципе, мне нужны результаты двух циклов for, которые будут вставлены в $json.
5 ответов:
Php имеет встроенную функцию сериализации JSON.
json_encode
пожалуйста используйте это, если вы можете и не страдаете не придуманным здесь синдромом.
вот несколько вещей, отсутствующих в предыдущих ответах:
установить заголовок в PHP:
header('Content-type: application/json'); echo json_encode($array);
json_encode()
может вернуть JavaScript массив вместо JavaScript объект см.:
возврат JSON из PHP скрипта
Это может быть важно знать, в некоторых случаях, как массивы и объекты не совпадают.
здесь раздел JSON в документации PHP. Однако вам понадобится 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} ?>
обычно вам было бы интересно также иметь некоторую структуру для ваших данных в получающем конце:
json_encode($result)
это также сохранит ключи массива.
помните, что json_encode работает только с данными в кодировке utf8.
можно использовать простой 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(); ?>