1

javascript関数に1、2、3、4などの文字列値を持つ配列があります。この配列をPHPのセッションに格納したいと思います。私はそれを検索し、彼らはJSONを使用すると言っていますが、私はJSONの使用方法を理解しています。

配列の名前がmyArray で、次のようなことをしたいとします。$ _SESSION ['myArray'] = myArray;

とにかくそれをする方法はありますか?可能であれば、実用的なコードサンプルを提供してください。

4

6 に答える 6

4

JavaScriptはクライアントで実行されており、PHPはサーバーで実行されています。HTTP経由でデータを送信する必要があります。

JavaScript配列からPHPセッションにデータを取得するには、次のことを行う必要があります。

  1. データをシリアル化します(フォーム内の入力のコレクションまたは文字列のいずれかに。JSONがサポートしていないデータ型がない限り、JSONオブジェクトは後者に役立ちます)。
  2. データをPHPに送信します(フォームを送信するか、Ajaxを使用します)
  3. PHPでデータを読み戻します(おそらくから$_POST
  4. オプションで、データ構造に逆シリアル化します
  5. に保存する$_SESSION
于 2012-05-29T16:10:31.333 に答える
0

JSONオブジェクトをphp(連想)配列にエンコードする方法は、次を使用することですjson_encode(JS_OBJECT_WHICH_IS_STRINGIFIED)。JSONオブジェクトをデコードjson_decode(PHP_ASSOC_ARRAY)するには、を使用します。

例えば:

$arr = json_encode('{a:"b"}');  // will give $arr = ['a': 'b']
$js_object = json_decode($arr); // will return '{a:"b"}'
于 2012-05-29T16:09:44.630 に答える
0

json_encodeとjson_decodeを見てください。基本的json_decodeには、javascript配列をphp配列に変換し、json_encodeその逆を行うために使用します。

于 2012-05-29T16:09:56.013 に答える
0

それはあなたが何を達成したいかによります。

JavaScriptの何かをPHPに保存したいだけの場合は、PHPの文字列リテラルに配列のJSON表現を割り当てることになります。

配列データを実際に操作したい場合は、JavaScriptから配列を解析してメモリに保存し、後で配列を含むJavaScriptコードを書き出すコードを記述する必要があります。このプロセスは、シリアル化/逆シリアル化として知られています。私は.netで作業しており、.netフレームワークにはこれらのタスクを実行するための組み込みクラスが含まれています。あなたのフレームワークもそうだと思います。

于 2012-05-29T16:10:35.873 に答える
0

JSONでエンコードされたJS配列を(ajaxまたは単純な形式で)phpファイルに渡してから、json_decode()でデコードする必要があります。そして最後にそれをセッションに保存します。したがって、まず、JSコードで次のようなものを使用します。

var json_text = JSON.stringify(your_array, null);

次に、PHPファイルに渡しjson_textて、次のように保存できるようにします。

$_SESSION['myArray'] = json_decode($_POST['json_string']);

もちろん$_POST['json_string']、パラメータに付けた名前によって異なります。

于 2012-05-29T16:13:38.820 に答える
-2

myArrayをjsonに変換するには:

var s = "[" = myArray.join + "]"

これは、myArrayに整数や浮動小数点数など、引用符を必要としないものが含まれている場合にのみ機能します。

スクリプト内のjsonに値を取得する問題を抽象化するために使用できるjavascriptフレームワークがあり、名前を思い出せませんが、それらは価値があると聞いています。一方、扱っている値の種類によっては、上記の内容よりもそれほど難しくはありません。

サーバーにjsonを取得するには:

document.getElementById("someHiddenElement").value = s;

次に、サーバー側のphpがセッションで値を保存できます。

于 2012-05-29T16:12:43.340 に答える