2016-10-28 98 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的做任何你想用它做。