Answers:
以下是先前答案中缺少的几件事:
在您的PHP中设置标头:
header('Content-type: application/json');
echo json_encode($array);
json_encode()
可以返回JavaScript 数组而不是JavaScript 对象,请参见:
从PHP脚本返回JSON
这在某些情况下很重要,因为数组和对象并不相同。
json_encode()
(像所有函数一样)总是返回某些内容(包括NULL
);您可以打印数据,处理它,然后打印出来,它assing以供以后使用一个变量,将其保存到一个文件,等等......你可以阅读更多有关return
在PHP中:返回值。您也可以(并且应该!)检查每个未知函数返回的内容,请参见示例json_encode(),该函数声明成功时返回JSON编码的字符串,失败时返回FALSE。
return json_encode($jsonArray);
不起作用(AngularJS http.get什么也没得到),直到后来我注意到它:)
通常,您会对在接收端对数据也具有某种结构感兴趣:
json_encode($result)
这也将保留阵列键。
请记住,json_encode仅适用于utf8编码的数据。
您可以对PHP使用Simple JSON。它发送标题以帮助您伪造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();
?>