XMLは、ほとんどのAjaxリクエストに余分なマークアップを追加します。データエンティティで何らかのリストが必要な場合は、JSON形式で送信してください。
私はJSONを使用してデータで非常に大きな配列を取得しました。
まずJSONは、Ajaxリクエストが実際にJavascriptオブジェクトとして評価されるStringをリクエストすることを意味するJavascript Object Notationです。
一部のブラウザでは、JSONの解析をサポートしています。他の人は少し助けが必要です。私はthis little libraryを使用して、私が開発したすべてのWebアプリケーションでresponseTextを解析し、問題はなかった。
JSONの使い方と使い方を知ったので、ここでPHPコードのようになります。
$response = [
"success" => true, // I like to send a boolean value to indicate if the request
// was valid and ok or if there was any problem.
"records" => [
$dataEntity1, $dataEntit2 //....
]
];
echo json_enconde($response);
エコーを試してみてください。私はPHP 5.4の配列宣言構文を使用しました。 :)
あなたがどうなるAjaxを介してデータを要求する:
var response
,xhr = getAjaxObject(); // XMLHttp or ActiveX or whatever.
xhr.open("POST","your url goes here");
xhr.onreadystatechange=function() {
if (xhr.readyState==4 && xhr.status==200) {
try {
response = JSON.parse(xhr.responseText);
} catch (err) {
response = {
success : false,
//other error data
};
}
if(response.success) {
//your data should be in response
// response.records should have the dataEntities
console.debug(response.records);
}
}
}
要約:
- JSONの構文解析は、PHPがJSONとしてマップを送信することができます
- JSON2ライブラリを経由して少しの助けを必要とし
- "成功/失敗"フラグとして成功ブールが広く使用されています
また、jQueryを使用している場合は、$ .ajax呼び出しでdataType: "json"プロパティを設定するだけで、成功のコールバックでJSON応答を受け取ることができます。
JSONとして入手できないのはなぜですか? XMLではなく –
@MahanはJSONに慣れていません。より大きなデータ転送が可能ですか?それを見てください。 – tinks
はい... JSONを2年間使用していて、XMLよりもはるかに高速です。ここで調べてみてください。http://www.w3schools.com/json/default.asp –