2

Ajax リクエストのセッション コンテンツをシリアライズしたいと考えています。これに似たもの:

var data = $.session("data").serialize();

これは、次のような標準のjQuery ajax関数用です。

$.ajax({
   type: "POST",
   url: "script.php",
   data: data,
   success: function() {
     ...
   }
});

serialize()はフォーム要素でのみ動作するため、同様のものを探しています。SESSION データ配列を表す形式で配列を処理するもの。

それは存在しますか、それとも foreach ループを使用してセッション コンテンツを POST に適した文字列に手動でシリアル化する必要がありますか?

4

2 に答える 2

1

このようなデータに対して serialize 関数を使用する主な本当の理由は、データが複数のソース (多くの入力フィールドを含むフォーム要素など) に由来する場合です。フォーム上の 1 つのシリアル化コマンドは、すべてのデータを返します。

「セッション」データを保持するいくつかの JavaSctipt 変数が既にある場合は、AJAX 呼び出しを介して単純にそれらをオブジェクトとして送信できます。1 つの変数にすべてのデータが既にある場合は、データをシリアル化する必要はありません。

いくつかのサーバー セッション変数を渡したい場合は、次のアプローチを検討することをお勧めします。セッション変数データを保存し、.xml を使用して json オブジェクトにエンコードできますjson_encode()。その後、変数にエコーアウトするだけで、JavaScriptに渡すことができます-

var sess_data = '<?php echo json_encode($_SESSION); ?>' ;

次に、AJAX 呼び出しで変数を渡すだけで済みます。データをシリアル化する必要はありません。

$.ajax({
   type: "POST",
   url: "script.php",
   data: sess_data,
   success: function() {
     ...
   }
});
于 2012-07-28T20:28:04.163 に答える
0

それが配列なのかオブジェクトなのか、それとも何かなのかは少しわかりませんが、おそらくこれには$.paramを使用できます。

ドキュメントから:

URL クエリ文字列または Ajax リクエストでの使用に適した、配列またはオブジェクトのシリアル化された表現を作成します。

--

var data = $.session("data");

$.ajax({
   type: "POST",
   url: "script.php",
   data: {data: $.param(data)},
   success: function() {
     ...
   }
});

そしてそれをPHPでキャッチ

parse_str($_POST['data'], $myVariable);
于 2012-07-28T20:25:50.327 に答える