我想从PHP脚本返回JSON。

我只是重复结果吗?我必须设置内容类型头吗?


当前回答

你问题的答案在这里,

它说。

JSON文本的MIME媒体类型为 application / json。

所以如果你设置标题为那种类型,并输出你的JSON字符串,它应该工作。

其他回答

如上所述:

header('Content-Type: application/json');

会完成这项工作。但请记住:

即使没有使用这个报头,Ajax读取json也没有问题,除非您的json包含一些HTML标记。在这种情况下,您需要将头文件设置为application/json。 确保您的文件不是用UTF8-BOM编码的。这种格式在文件顶部添加了一个字符,因此header()调用将失败。

尝试json_encode对数据进行编码,并设置带有header的content-type (' content-type: application/json');

如果你想要js对象,使用头content-type:

<?php
$data = /** whatever you're serializing **/;
header('Content-Type: application/json; charset=utf-8');
echo json_encode($data);

如果你只想要json: remove header content-type属性,只需要encode和echo。

<?php
$data = /** whatever you're serializing **/;
echo json_encode($data);

如果你需要从发送自定义信息的php中获取json,你可以添加这个头('Content-Type: application/json');在打印任何其他东西之前,所以然后你可以打印你的自定义echo '{"monto": "'.$monto[0]->valor.'","moneda":"'.$moneda[0]->nombre.'","simbolo":"'.$moneda[0]->simbolo.'"}';

一个返回带有HTTP状态代码的JSON响应的简单函数。

function json_response($data=null, $httpStatus=200)
{
    header_remove();

    header("Content-Type: application/json");

    http_response_code($httpStatus);

    echo json_encode($data);

    exit();
}