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");
の関数は実際には何ですか?
関数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