2016-08-26 6 views
0

Ich habe mehrere Eingänge auf meiner Plugins-Website. Ich sammle die Werte von denen und schiebe sie in ein Array. Dann verwenden Sie die jQuery.post Methode, um es in meinem PHP-Skript zu veröffentlichen.Wordpress - JSon-codierte Array zu PHP zurückgeben gibt nichts zurück/

Javascript:

var json = JSON.stringify(output); // output is an array with multiple strings 
var data = { 
    "action" : "add", 
    "output" : json, 
} 
jQuery.post(ajaxurl, data, function(response){ 
    console.log(response); // logs the response from PHP 
}) 

PHP:

$array = json_decode($_POST['output']); 
update_option("option", $array); 
var_dump($array); // returns NULL in console 
echo $array; // returns nothing in console 
wp_die(); 

Ich möchte PHP das Array JS zurückzukehren und es als Option zu speichern.

Dies ist meine erste Frage hier. Bitte zögern Sie nicht, mir Tipps zu geben, wie ich meine Frage und meinen Code verbessern kann.

Lösung

Es schien Probleme mit dem ‚\‘ im JSON-String zu haben, die gebucht wurde.

$array = json_decode(stripslashes($_POST['output'])) hat den Job

+0

Überprüfen Sie in Ihrem Netzwerk-Tab, was die 'var_dump ($ array)' Dumps ... und dump '$ _POST ['output']' auch um zu sehen, was es tatsächlich enthält . –

+0

Er gibt "NULL" in der Konsole aus, wenn Sie das meinen .... 'var_dump ($ _ POST ['output')]' protokolliert die Json-Zeichenkette – IruleZ

+0

Nein .. In Entwickler-Tools haben Sie eine Registerkarte mit dem Namen "Netzwerk ". Klicken Sie auf "Netzwerk" und führen Sie Ihr JS-Skript aus. Sie sollten dann die aufgerufene URL sehen (genauso wie Ihre 'ajaxurl' enthält). Klicken Sie auf diese URL und dann auf "Antwort". Das gibt Ihnen die tatsächliche Antwort von Ihrem PHP-Skript. Ihre 'console.log' zeigt Ihnen nur, was jQuery zurückgibt. Wenn also Fehler oder ein ungültiges Format auftreten, erhalten Sie null. –

Antwort

0

eine Lösung gefunden. Es ist in der Frage unter "Lösung" geschrieben

0

Wenn Sie das Skript wollen das gleiche Objekt zurück, wie es kam:

// The second param "true" makes sure we get an associative array 
// instead of an object. 
$array = json_decode($_POST['output'], true); 
update_option("option", $array); 

// Set the correct content header (good practice) 
header('Content-Type: application/json'); 

// Echo the string representation of the json-object 
// Let's use the same as we got in the $_POST['output'] 
echo $_POST['output']; 

wp_die(); 
+0

Ok .. Es tut mir leid. Ich glaube, ich habe dir eine falsche Vorstellung von meinem Ziel gegeben. Das Ziel ist es, die Option zu setzen, damit ich sie woanders verwenden kann. Durch die Rückgabe des Object/String wird lediglich gesteuert, ob das Skript funktioniert. 'var_dump ($ array)' gibt 'NULL' zurück. '$ _POST ['output']' enthält einen JSON String. Ich möchte die JSON-Zeichenfolge in das ursprüngliche Array deserialisieren und als Option festlegen. – IruleZ

+0

Ja, es war dieser Satz _ "Ich möchte, dass PHP das Array an JS zurückgibt ..." _ das gab mir diese Idee. –

+0

Ja, tut mir leid. Aber trotzdem, danke, dass du es versucht hast. – IruleZ