web-dev-qa-db-ja.com

AJAXを使用したマルチレベル連想オブジェクトの作成

コードをきれいにするために、WordPressを使用して$.postメソッドでマルチレベル連想オブジェクトを作成したいと思います。問題は、これらの値をバックエンドで操作する方法がわからないことです。

これは、AJAXリクエストを含んで処理するmy_query.jsファイルでやりたいことです。

$.post( MyAjax.ajaxurl, {
    action: 'my_action',
    someValue: {
        one: 'Some Value One',
        two: 'Some Value Two',
        three: 'Some Value Three',
        four: 'Some Value Four',
    }
} );

これが現在の解決策であり、私はDO NOTをコードに実装したい。

$.post( MyAjax.ajaxurl, {
    action: 'my_action',
    someValueOne: 'Some Value One',
    someValueTwo: 'Some Value Two',
    someValueThree: 'Some Value Three',
    someValueFour: 'Some Value Four'
} );

バックエンドでこれらの値を取得できる唯一の方法は、2番目のオプションを使用し、.phpファイルでこれを実行することです。

$someValue = array(
    'one'   => $_POST[ 'someValueOne' ],
    'two'   => $_POST[ 'someValueTwo' ],
    'three' => $_POST[ 'someValueThree' ],
    'four'  => $_POST[ 'someValueFour' ]
);

echo $someValue[ 'one' ];

wp_die();

しかし...とにかく問題は何ですか?

I DO NOT最初の例を使用して.phpファイル内でAJAX Data Objectにアクセスする方法を知っています2番目のものを使用することによってのみ機能します。最初のAJAX Requestの例を使用して、.phpファイル内のsomeValueオブジェクトを返すにはどうすればよいですか?

1
iszwnc

実際に私が見つけた解決策はとても単純で、あまり必要としませんでした。どういうわけか私はバックエンドで私のAJAX機能要求の中のデータを検索することができませんでした。

JavaScriptコード

以下でわかるように、私はsomeValueプロパティを私が望んだとおりに定義しました。とてもきれいできれいです。

$.post( MyAjax.ajaxurl, {
    action: 'my_action',
    someValue: {
        one: 'Some Value One',
        two: 'Some Value Two',
        three: 'Some Value Three',
        four: 'Some Value Four'
    }
} );

PHPコード

データオブジェクトの中で定義されているすべてのプロパティを私のバックエンドの中の配列として関連付けることができることを忘れているはずです。function

$someValue = array(
    'one'   => $_POST[ 'someValue' ][ 'one' ],
    'two'   => $_POST[ 'someValue' ][ 'two' ],
    'three' => $_POST[ 'someValue' ][ 'three' ],
    'four'  => $_POST[ 'someValue' ][ 'four' ]
);

wp_die();

あなたがAJAXリクエストからどのような種類のデータを取得しているのかわからない場合。私たちの友人 @ mmmvar_dump()またはprint_r()$_POSTスーパーグローバルに要求したことを実行することをお勧めします。何か。

0
iszwnc

複雑な値を渡したい場合は、おそらくそれをJSON化することです。何かのようなもの

$.post( MyAjax.ajaxurl, {
    action: 'my_action',
    someValue: JSON.stringify({
        one: 'Some Value One',
        two: 'Some Value Two',
        three: 'Some Value Three',
        four: 'Some Value Four',
    })
} );

そしてサーバー側であなたはで値をデコードします

$someValue = json_decode($_POST['someValue']);

この時点で$someValueはあなたが渡したい配列であるべきです。

1
Mark Kaplun