web-dev-qa-db-ja.com

`header(" Content-type:application / json ");`の使用法

ajaxから_json-encoded_データを取得するJQuery PHP関数を作成しました。これが私のコードです。

ファイル名:bank.php

_$('form').on('submit', function(){

        var datatobesent  = $(this).serialize();
        $.ajax({
            data: datatobesent,
            url:'data.php',
            type:'GET'
        })
        .done(function(data){
            console.log(typeof(data));
        });
        return false;
})
_

そして_data.php_に私が書いた

_if(isset($_GET)){
    $data = $_GET;
    echo json_encode($data);
    header("Content-type:application/json");
}
_

問題は、_data.php_のheader("Content-type:application/json");の行を削除すると、_console.log_はajaxによって返されるデータのタイプがstringであることを伝えることです。 。

_dataType :_のajax関数内に_bank.php_ json``を追加すると、タイプはobjectに変更されます

header("Content-type:application/json");の関数は実際には何ですか?

9
januaryananda

関数header("Content-type:application/json")は、http jsonヘッダーをブラウザに送信して、期待するデータの種類を通知します。ブラウザで各リクエストのすべてのhttpヘッダーを表示できます(chrome開発者ツールを使用している場合、ネットワークにアクセスし、ビューを調整してページをリロードすると、すべてのリクエストが表示されますブラウザで、これらのリクエストのいずれかをクリックしてからヘッダーをクリックすると、各リクエストのヘッダーが表示されます)。

この関数を使用すると、サーバーから送信された応答にhttpヘッダーContent-Type:application/jsonが表示されます。使用しない場合、サーバーはデフォルトを送信します。デフォルトはContent-type:text/html; charset=UTF-8です

@Montyが述べたように、dataType: 'json'をAJAXに追加した場合、この関数は必要ありません。JQueryはtext/htmlヘッダーで送信されても​​データを処理するためです。

関連項目: jQuery AJAX Call to PHP Script with JSON Return

ヘッダーの詳細を読むには: http-headers-for-dummies

17
Ahmed Essam