2016-10-28 4 views
1

Ich sende ein JS-Objekt über $ .post() und ich möchte ein Array zurück.Return PHP-Array nach AJAX-Aufruf

JS

var ajaxData = {action:"createuser"} 
$("input[required]").each(function(){ 
    var attr = $(this).attr("name"); 
    ajaxData[attr] = $(this).val(); 
}); 
$.post(
    daten.ajaxurl, 
    ajaxData, 
    function(data){ 
     alert(data[0]) 
    }   
) 

PHP

//Create a User 
add_action('wp_ajax_nopriv_createuser','createuser'); 
function createuser() { 
    foreach ($_POST as $key => $value) { 
     if(empty($value)) { 
      $type = "error"; 
      $content = "$key is empty"; 
      echo array($type,$content); 
      wp_die(); 
     } 
    } 
} 

Was bekomme ich als Antwort ist immer ein String, so dass es gut funktioniert, wenn ich $ content Echo.

Ich habe gelesen, dass Sie JSON verwenden können und es automatisch codieren, wenn Sie DataTaype hinzufügen: "JSON".

Aber ich habe keine Ahnung, wie richtig es tho

+1

Just do 'Echo json_encode (array ($ type, $ content))'. Ich nehme an, dass du das meinst. – Andrew

+0

@Andrew jetzt bekomme ich ein Objekt zurück. Ich nehme an, es ist ein JSON-Objekt. Wie kann ich es in ein Array verwandeln? –

+0

Sie können [JSON Parse] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) von javascript verwenden, um die Informationen im json zu lesen. – Andrew

Antwort

0

Ich würde die verwenden wp_send_json(); Funktion. Das ist genau das, wonach du suchst.

Und vergessen Sie nicht, wp_die() am Ende zu setzen.

wp_send_json(): https://codex.wordpress.org/Function_Reference/wp_send_json

wp_die(): https://codex.wordpress.org/Function_Reference/wp_die

+0

Sie sind fantastisch! Ist die wp_die() notwendig, wie wp_send_json() feuert sterben()? –

+0

Sie müssen wp_die nicht mit dieser Funktion verwenden. –

+0

Nein, das ist nicht notwendig, da wp_send_json() die die() enthält. Aber es ist "Best Practice" - eine Zeile Code und du schläfst besser: D –

1

in PHP, dekodieren können Sie nicht nur ein Array Echo. In AJAX wird standardmäßig JSON-Objekte in Anforderungen zurückgegeben. Was Sie tun möchten, ist ein JSON-Objekt aus dem Array zu machen. Sie können json_encode dafür verwenden.

http://php.net/json_encode

Danach können Sie das JSON-Objekt in JS/jQuery verwenden können, zu tun, was Sie damit tun wollen.

Verwandte Themen