2016-10-28 105 views
1

我通過$ .post()發送了一個JS對象,並且想要返回一個數組。在AJAX調用後返回PHP數組

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(); 
     } 
    } 
} 

我能得到什麼作爲迴應始終是一個字符串,所以它工作得很好,如果我回聲$內容。

我讀過關於你可以使用JSON並獲得它自動編碼,如果你添加DataTaype:「JSON」。

但我不知道如何正確地在PHP解碼,壽

+1

只是做'回聲json_encode(陣列($型,$內容))'。我認爲這就是你的意思。 – Andrew

+0

@Andrew現在我得到一個對象。我認爲這是一個JSON對象。我怎樣才能把它變成一個數組? –

+0

您可以使用JavaScript中的[JSON解析](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)讀取json中的信息。 – Andrew

回答

0

我會使用wp_send_json();功能。這正是你尋找的東西。

不要忘了把wp_die()在最後。

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

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

+0

你太棒了! wp_die()是否必要,因爲wp_send_json()觸發die()? –

+0

您不必使用帶此功能的wp_die –

+0

不,不需要,因爲wp_send_json()包含die()。但它是「最佳實踐」 - 一行代碼,你睡得更好:D –

1

你不能只是呼應的數組。在AJAX中,它被認爲是默認的返回請求中的JSON對象。你想要做的是從數組中創建一個JSON對象。你可以使用json_encode。

http://php.net/json_encode

之後,你可以使用JSON對象JS/jQuery的做任何你想用它做。