你可以检索json数据而不是在php中使用json_encode吗?

时间:2011-05-12 05:02:25

标签: php jquery ajax json

我没有运气,但我想知道如果不是json编码的服务器端与PHP,我是否可以抓取json数据。例如,如果我只是像这样回应一些数据:

echo '{"subscriptions": [{"subscribe":"'.$subscribe[0].'"},{"subscribe":"'.$subscribe[1].'"},{"subscribe":"'.$subscribe[2].'"},{"subscribe":"'.$subscribe[3].'"},{"subscribe":"'.$subscribe[4].'"}]}';

我还可以使用jQuery ajax json调用来获取数据吗?

5 个答案:

答案 0 :(得分:3)

是的,只要echo'd数据是有效的JSON数据

答案 1 :(得分:3)

这当然看起来不错,应该可以正常工作。

json_encode()只会简化过程,因为在手动创建字符串时很容易出现引号/括号/大括号/方括号错误。

我猜你只是在询问,因为你的服务器上没有json_encode()。作为替代方案,您可以尝试Zend Framework中的组件。这会尝试使用json_encode(),但在不可用时会回退到内置方法。

请参阅http://framework.zend.com/manual/en/zend.json.html

答案 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);

干杯