我没有运气,但我想知道如果不是json编码的服务器端与PHP,我是否可以抓取json数据。例如,如果我只是像这样回应一些数据:
echo '{"subscriptions": [{"subscribe":"'.$subscribe[0].'"},{"subscribe":"'.$subscribe[1].'"},{"subscribe":"'.$subscribe[2].'"},{"subscribe":"'.$subscribe[3].'"},{"subscribe":"'.$subscribe[4].'"}]}';
我还可以使用jQuery ajax json调用来获取数据吗?
答案 0 :(得分:3)
是的,只要echo'd数据是有效的JSON数据
答案 1 :(得分:3)
这当然看起来不错,应该可以正常工作。
json_encode()
只会简化过程,因为在手动创建字符串时很容易出现引号/括号/大括号/方括号错误。
我猜你只是在询问,因为你的服务器上没有json_encode()
。作为替代方案,您可以尝试Zend Framework中的组件。这会尝试使用json_encode()
,但在不可用时会回退到内置方法。
答案 2 :(得分:2)
基本上所有发生的事情是您正在创建JSON格式并创建自己的编码器。但是您也需要发布自己的JSON标头。使用以下命令启动回调PHP文件:
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
请记住,您需要特别注意格式化JSON,否则会破坏您的应用程序。
答案 3 :(得分:1)
我相信只要你发送了正确的服务器标题,表明它的JSON内容Content-Type: application/json
就应该是好的。
使用PHP' json_encode()
有什么问题?您使用的是旧版本的PHP吗?
答案 4 :(得分:1)
你可以,但不推荐。您应该使用json_encode
。如果您首先要转换对象有问题,可以这样做:
$obj = array(
"subscriptions" => array(
array("subscribe" => (string)$subscribe[0]),
array("subscribe" => (string)$subscribe[1]),
array("subscribe" => (string)$subscribe[2]),
array("subscribe" => (string)$subscribe[3]),
)
);
echo json_encode($obj);
干杯