1. ホーム
  2. javascript

[解決済み] HTTP Content-Type ヘッダとJSON

2022-03-03 04:46:57

質問

私は常々、未知のものを恐れるあまり、HTTPプロトコルのプロパティのほとんどを使わないようにしています。

しかし、私は今日から恐怖に立ち向かい、ヘッダーを意図的に使うようにしようと自分に言い聞かせた。私はこれまで json のデータをブラウザに送信し、すぐに使用することができます。例えば、ready state 4に以下のようなAjaxハンドラ関数があるとします。

function ajaxHandler(response){
    alert(response.text);
}

そして、私のPHPコードでcontent-typeヘッダーを設定しました。

header('Content-Type: application/json');
echo json_encode(array('text' => 'omrele'));

ブラウザが受信データを明確に伝えているのに、なぜハンドラ関数からプロパティに直接アクセスできないのでしょうか? application/json ?

解決方法は?

その Content-Type ヘッダは、アプリケーションの情報として使用されるだけです。 ブラウザはそれが何であるかは気にしません。 ブラウザはAJAX呼び出しからのデータを返すだけです。 もし、JSONとしてパースしたいのであれば、自分で行う必要があります。

ヘッダーがあることで、アプリはどのようなデータが返されたかを検知し、それをどのように処理すべきかを知ることができます。 ヘッダーを見て、もしそれが application/json であれば、JSONとしてパースします。

実はこれ、jQueryの仕組みなんです。 結果をどう扱うか指示しなければ Content-Type を使用して、それをどうするかを検出します。