ここではコード例は実際には探していません。1つのAJAXリクエストからの複数の応答
ページに3つのセクションがあり、JSONを返すPHPスクリプトへの3回の別々のAJAX呼び出しによって更新されています。これらの3つの呼び出しを1つの大きな呼び出しに集約し、JSONのクライアントで応答を受け取る最も簡単な方法は何ですか?どのように情報を送り返すかに基づいてレスポンスデータを操作できるように、クライアント上のレスポンスをどのように分離するのですか?
ここではコード例は実際には探していません。1つのAJAXリクエストからの複数の応答
ページに3つのセクションがあり、JSONを返すPHPスクリプトへの3回の別々のAJAX呼び出しによって更新されています。これらの3つの呼び出しを1つの大きな呼び出しに集約し、JSONのクライアントで応答を受け取る最も簡単な方法は何ですか?どのように情報を送り返すかに基づいてレスポンスデータを操作できるように、クライアント上のレスポンスをどのように分離するのですか?
私はCris 'メソッドが好きですが、少し改善ができると思います。 3つの別個のエンティティを既に持っているので、すべてを記録する必要性を減らすために、include 'page.php'
を介してPHPを1つのファイルに結合し、JSONを介してオブジェクトを戻します。 「名前」、「日付」、「ファジィトゥング」など)リクエストを送信するクライアントコードは、3つの関数が個別に送信したすべての引数を1つのリクエストで送信するだけです。返されるJSONは、このようになります(あなたのオブジェクト/配列を置く/コメントの分野で何でも):
{
"names" : {/*stuff needed for names goes in here*/},
"dates" : {/*stuff needed for dates goes in here*/},
"fuzzyThings" : {/*all fuzzy things goes in here*/}
}
私は、それぞれがすでに機能を有することができると仮定して、あなたが、クライアント側にこれを取得すると(またはそれの戻りデータを扱うための関数のセット)、あなたは、このようにそれらを呼び出すことができるはずです。また
function handler(retText) {
var returnedObject = eval(retText);
doStuffWithNames(returnedObject.names);
doStuffWithDates(returnedObject.dates);
playWithFuzzyThings(returnedObject.fuzzyThings);
}
、PHPの端にあなたが経由で)うまくいけば何も再コーディングせずに(統一PHPのページを作ることができます。
<?php
echo '{';
echo '"names":{';
include 'names.php';
echo '},';
echo '"dates":{';
include 'dates.php';
echo '},';
echo '"fuzzyThings":{';
include 'fuzzyThings.php';
echo '}';
echo '}';
?>
注: 3つのPHPページを編集して、$ _POSTを正しくチェックする必要があるかもしれません。また、他のページの機能に干渉することなく、私はif(isset($_POST['whatever'])) { ... }
の方法あなたが望むだけ多くを含めることができ、PHPファイルとは何の関係もない場合(つまり、そのページでそのセクションを使用していない場合)、空白のプロパティが返され、単純には使用しません(基本的には、「ワンサイズのすべて」のタイプになります)。
yaのためにうまくいきますように!
あなたはこのようなあなたのJSONをフォーマットすることができます:あなたのAJAX応答で
"user" : [ {
"name" : "Harry",
"hobby" : "Skating"
}, {
"name" : "Dave",
"hobby" : "Scuba Diving"
} ],
"news" : [ {
"date" : "3/13/05",
"title" : "Blah",
"postedby" : "Mike",
} ]
そして今:
var data = eval('('+ xhr.responseText +')'); // Ajax response
var user = data.user[0].name; // Harry
var user2 = data.user[1].name; // Dave
var title = data.news[0].title;
あなたはデータを横断するためのループを使用することができます。上記の例では、PHPを使用してJSONを複数のカテゴリ(ユーザー、ニュース、その他)でフォーマットし、1回の呼び出しですべてを返す方法を見ています。より精巧な例をご希望の場合は、thisの記事とthisをご参照ください。
ページの3つのセクションに従ってJSON形式を作成してIDを作成しなければならないと思うので、応答後にそれらのセクションにデータを取り込むことができます。
私は個人的にJSONの方法のようなしかし、あなたはJSONに新しいしているか、いずれかの理由のためにそれで作業快適に感じていない場合がありますRailsのコミュニティでjQuery Taconite Plugin
と呼ばれ、この目的のために特別に設計されたjQueryプラグインがありますRJSと呼ばれる第3の方法は今日はそれほど暑くはなく、少し古くなったと感じていますが、依然として独自のファンを持っています。誰かがRJSをPHPに移植したのかどうか分かりましたか?
//for test
$categoryName = "category";
$idcategory = "1";
$json = "{'productcategory':[{'categoryname':'".$categoryName."','idcategory':'".$idcategory."'}]}";
echo $json;
のjavascript::これは私のため
PHPコードworkimgさ
私はあなたの改善を好き
var str = xmlhttp.responseText.trim();
var json = JSON.stringify(eval("(" + str + ")"));
var obj = JSON.parse(json);
alert(obj.productcategory[0].idcategory);
alert(obj.productcategory[0].categoryname);
を、私はそれについてあなたの方法を考えていませんでした。よくやった仲間。 –