在AJAX调用后返回PHP数组

时间:2016-10-28 09:29:48

标签: php json ajax wordpress

我通过$ .post()发送一个JS对象,我希望得到一个数组。

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

作为回复我得到的总是一个字符串,所以如果我回显$ content,它会很好。

我已经读过您可以使用JSON并在添加DataTaype时自动编码:" JSON"。

但我不知道如何在PHP中正确解码它,等等。

2 个答案:

答案 0 :(得分:1)

你不能只回显一个数组。在AJAX中,它被认为是在请求中返回JSON对象的默认值。你想要做的是从数组中创建一个JSON对象。您可以使用json_encode。

http://php.net/json_encode

之后,你可以使用JS / jQuery中的JSON对象做你想做的任何事情。

答案 1 :(得分: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