我有一个脚本,我用它来使用Zend Framework从PHP返回一些JSON。
这就是我得到的:[] {“Test”:“Tester”}但是jQuery中的成功函数没有被调用。 json不应该是[{“Test”:“Tester”}]吗?
在我的控制器中我这样做了:
echo Zend_Json::encode(array("Test" => "Tester"));
客户Js:
$.getJSON("/entry/get-projects",
{
"id": 1,
"format": "json"
},
function(data, textStatus, jqXHR) {
alert("win");
}
);
答案 0 :(得分:1)
在处理json调用的操作中
$callback = $this->getRequest()->getParam('callback');
echo $callback . '(' . Zend_Json::encode(array('key' => 'value')) . ')';
在你的JS中
var map = {
'key1' : val1,
'key2' : val2
};
$.post('/some/ajax-action/', map, some_callback_function, 'json');
如果做不到这一点,你总是可以尝试:
http://php.net/manual/en/function.json-encode.php
echo json_encode(array('key' => 'value'));
答案 1 :(得分:0)
我用它来工作
这里提到的$this->_helper->json();
:http://www.stoimen.com/blog/2010/08/13/returning-json-in-a-zend-controllers-action/
不确定是否有更好的方法。例如:Propel有一个漂亮的toJSON方法,可以从查询结果中取回json代码。使用propel将其转换为数组会很糟糕,然后必须使用Zend将其转换为JSON。