it-swarm.com.de

Erstellen eines mehrstufigen assoziativen Objekts mit AJAX

Ich möchte mit WordPress ein mehrstufiges assoziatives Objekt auf $.post erstellen, um meinen Code sauberer zu machen. Das Problem ist, dass ich nicht weiß, wie ich diese Werte im Back-End manipulieren kann.

Dies ist, was ich in der my_query.js-Datei tun möchte, die die AJAX -Anforderung enthält und behandelt.

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

Und das ist die aktuelle Lösung, die ich NICHT auf meinem Code implementieren möchte.

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

Die einzige Möglichkeit, diese Werte im Back-End zu erhalten, besteht darin, die zweite Option zu verwenden und dies in der Datei .php zu tun.

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

echo $someValue[ 'one' ];

wp_die();

Aber ... Was ist das Problem überhaupt?

Ich kann NICHT auf das AJAX-Datenobjekt zugreifen Meine .php-Datei funktioniert mit dem ersten Beispiel (was ich gerne möchte) nur mit dem zweiten. Wie kann ich das Objekt someValue in der Datei .php anhand des ersten Beispiels für eine AJAX-Anforderung zurückgeben?

1
iszwnc

Eigentlich war die Lösung, die ich gefunden habe, sehr einfach und erforderte nicht viel. Aus irgendeinem Grund konnte ich die Daten in meinem AJAX Function Request im Backend nicht abrufen.

JavaScript-Code

Wie Sie unten sehen können, habe ich die Eigenschaft someValue so definiert, wie ich es wollte, sehr sauber und hübsch.

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

PHP Code

Ich muss vergessen haben, dass ich alle im Datenobjekt definierten Eigenschaften als Array in meinem Backend Funktion .

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

wp_die();

Wenn Sie sich nicht sicher sind, welche Art von Daten Sie von der AJAX-Anfrage erhalten . Ich empfehle Ihnen zu tun, was unser Freund @ mmm mich gefragt hat, nur var_dump() oder print_r() den $_POST superglobal, dann werden Sie sehen, ob Sie tatsächlich bekommen etwas.

0
iszwnc

Wenn Sie einen komplexen Wert übergeben möchten, ist es wahrscheinlich der beste Weg, ihn zu jsonifizieren. So etwas wie

$.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',
    })
} );

und dann auf der Serverseite dekodieren Sie den Wert mit

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

Zu diesem Zeitpunkt sollte $someValue das Array sein, das Sie übergeben möchten.

1
Mark Kaplun