何时在PHP中使用标题('Content-Type:application/json')

nas*_*971 4 php curl http http-headers

我一直在试图弄清楚header('Content-Type: application/json')php脚本的用法是什么,我在stackoverflow上找到了关于这个主题的不同问题和答案,但我仍然没有完全理解它...

所以这里有一个问题:我在一些php项目中看到过这行代码,我正在努力理解

  • 如果在另一个网页调用这个实际脚本(例如ajax)时使用它,那么调用页面可以从php页面获取一个json

要么

  • 如果这个脚本意味着php页面将处理从另一个网页发送的json.或者别的什么???

另一件事可以帮助我,如果回答,最近我一直在使用cURL从资源(外部URL)检索json,我不得不在请求中放置此标头(Content-type:application/json).我是否将此标题发送到exertnal资源或是这个MY标题,以便我可以处理返回的json?

谢谢

nas*_*971 8

好为那些有兴趣谁,我终于想通了,header('Content-Type: application/json')用来当另一个页面调用PHP脚本,以便其他页面能自动解析JSON作为结果.

例如我在我的test.php中:

header('Content-type: application/json; charset=utf-8');
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr); // {"a":1,"b":2,"c":3,"d":4,"e":5}
Run Code Online (Sandbox Code Playgroud)

在我的main.js

function test() {
    $.ajax({
        url: 'test.php',
        type: 'GET',
        //dataType: 'html',
        success: function (response) {
            alert(response);
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

当我没有将dataType设置为"json"或者我的test.php中没有标题时,警报会给出{"a":1,"b":2,"c":3,"d":4,"e":5}一个字符串(尝试使用typeof(响应),当我有这个标题或dataType时: "json",我[object Object]从警报中得到.所以这个标题函数用于向调用页面指示它返回的数据类型,以便您可以知道如何处理它.在我的脚本中,如果我没有有header('Content-Type: application/json'),我将不得不在这样的javascript中解析响应:JSON.parse(response)为了使它成为一个json,但有了这个头,我已经有了一个json对象,我可以解析为html with jSON.stringify(response).