【发布时间】:2013-02-03 10:44:59
【问题描述】:
在我的 CakePHP 应用程序中,我返回 JSON 并退出某些请求。例如,尝试以 GET 请求的形式访问 API 以进行登录:
header('Content-Type: application/json');
echo json_encode(array('message'=>'GET request not allowed!'));
exit;
但是,我必须在 echo 前面加上内容类型,才能将其作为 JSON 发送。否则我在另一端的代码会有不同的解释。
关于如何解决这个问题的任何想法?或者至少改进一下。
更新:Cake 2.3.0 版
【问题讨论】:
-
这是 JSON 内容的正确标头。将标题添加到您的内容没有任何问题。应该是这样的。
-
实际上,如果您没有明确发送 HTML Content-Type,PHP 已经宠坏了您。所以这确实是应该的。
-
如果这让您感到困扰,只需创建一个像
send_my_json($array)这样的包装函数,它会发送正确的header(),然后在提供的参数上调用json_encode()。 -
我想知道为什么 a) 你没有提到你的蛋糕版本(现在你应该知道这对于获得正确答案至关重要)和 b) 你不使用 2.x 的响应对象(你可能已经知道它的存在了..)
-
json 只是纯文本,因此 text/plain 也是有效的 mime 类型。如果接收端如何进行,那么重要的是什么。例如jquery 可以使用 mime 类型来检测 json 并自动为您决定。