【问题标题】:Return PHP array after AJAX callAJAX 调用后返回 PHP 数组
【发布时间】:2016-10-28 09:29:47
【问题描述】:

我正在通过 $.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 效果很好。

我了解到,如果您添加 DataTaype: "JSON",您可以使用 JSON 并自动对其进行编码。

但我不知道如何在 PHP 中正确解码,但是

【问题讨论】:

  • 只要echo json_encode(array($type, $content))。我想这就是你的意思。
  • @Andrew 现在我得到了一个对象。我假设它是一个 JSON 对象。我怎样才能把它变成一个数组?
  • 您可以使用javascript中的JSON Parse来读取json中的信息。

标签: php json ajax wordpress


【解决方案1】:

我会使用 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

【讨论】:

  • 你太棒了! wp_die() 是否必要,因为 wp_send_json() 会触发 die() ?
  • 你不必使用 wp_die 这个函数
  • 不,没有必要,因为 wp_send_json() 包括 die()。但这是“最佳实践”——一行代码,你睡得更好:D
【解决方案2】:

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

http://php.net/json_encode

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    相关资源
    最近更新 更多