0

JavaScriptオブジェクトを次のようなものにエンコードするコードがあります。

<script>
    var php_string='array("one"=>"value_one","two"=>"value_two")';
</script>

今、私はこれをそれに変換する方法を知りたいです:

{
    "one":"value_one",
    "two":"value_two"
}

の内容は、変数php_stringで PHP に送信されます。$_POSTとにかくそれを行う方法はありますか、代わりに JSON を使用する必要がありますか?

編集

尋ねられたように、これが私の作成したコードですphp_string:

function encodeFormOptions(inputsWrapper){
    var the_serialize=$(inputsWrapper).find(":input").serializeArray();
    var text="array(";
    $.each( the_serialize, function( key, value ) {
        text+='"'+value["name"]+'"=>'+'"'+value["value"]+'",';
    });
    if (text.charAt(text.length-1)==",")
        text=text.substring(0,text.length-1);
    text+=");";
    return text;
}

編集2

純粋な Javascript でこの変換が必要であることを忘れていました。つまり、配列文字列を解析して javascript オブジェクトにする必要があります。これは、ページ上の特定のボタンがクリックされたときに、現在内部にある値を読み取る必要があるためですphp_string

EDIT 3(の完全な理由php_string

問題を抽象化しようとしましたが、そうすべきではなかったことがわかりました。

「オプション」という名前のいくつかの入力と複数のボタンがあるページフォームがあります

これらのボタンのいずれかをクリックすると、動的フィールド (選択フィールドで選択したオプションから派生) を含むポップアップが表示され、すべての入力を入力すると、 を作成しphp_stringて非表示フィールドに保存します。

「オプション」ボタンの1つをもう一度クリックすると、選択フィールドの選択されたオプションが表示されない場合にポップアップ入力が表示するデフォルト値を設定するために、非表示フィールドに保存したものを読み取ることができます変わりません。

次に、隠しフィールドが PHP で解析されます。

4

1 に答える 1

1

編集:

これはあなたが探しているものに近いかもしれません:

<script>
    var php_string = 'array("one"=>"value_one","two"=>"value_two")';
    var php_string = JSON.parse(php_string.replace(/array\(/g, '{').replace(/\)/g, '}').replace(/=>/g, ':'));
</script>

ただし、これは確かに最も洗練された処理方法ではないため、その出力を生成しているものをリファクタリングすることを検討してください。たとえば、クライアントから json を送信し、サーバー側でjson_decodeを使用できます。

于 2013-02-12T16:12:17.150 に答える