![](/img/trans.png)
[英]PHP header('Content-Type: application/json'); is not working
[英]When to use header('Content-Type: application/json') in PHP
我一直試圖弄清楚php腳本中的header('Content-Type: application/json')
的用法是什么,我在stackoverflow上找到了關於這個主題的不同問題和答案,但我仍然沒有完全得到它...
所以這里有一個問題:我在一些php項目中看到過這行代碼,我正在努力理解
要么
另一件事可以幫助我,如果回答,最近我一直在使用cURL從資源(外部URL)檢索json,我不得不在請求中放置此標頭(Content-type:application / json)。 我是否將此標題發送到exertnal資源或是這個MY標題,以便我可以處理返回的json?
謝謝
對於那些感興趣的人,我終於想通了當另一個頁面調用php腳本時使用header('Content-Type: application/json')
,以便其他頁面可以自動將結果解析為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}
在我的main.js
function test() {
$.ajax({
url: 'test.php',
type: 'GET',
//dataType: 'html',
success: function (response) {
alert(response);
}
});
};
當我沒有將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對象,我可以用jSON.stringify(response)
它解析為html jSON.stringify(response)
。
您應始終為任何HTTP響應設置Content-Type
,以描述您在該響應中所服務的內容。
無論是JSON還是其他東西,以及它是用於AJAX請求還是其他任何類型的請求。
您還應該為描述POST有效負載的任何請求設置Content-Type
。
在PHP中,如果您沒有在腳本中指定Content-Type
標頭,則默認為您配置的default-mimetype在php.ini
文件中,通常為text/html
。
調用header('Content-Type: application/json')
將覆蓋該默認設置,以便腳本在請求時響應該Content-Type
。
此外,當使用Content-type:application/json
標頭調用curl
時,您要指定請求正文的內容類型,而不是預期的響應。
Content-Type字段的目的是充分描述主體中包含的數據,使得接收用戶代理可以選擇適當的代理或機制來向用戶呈現數據,或者以適當的方式處理數據。
簡而言之,只是告知接收者他收到了什么樣的數據並相應地消費它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.