javascript - 数组存在并已填充,但无法访问 AJAX 响应上的各个元素

标签 javascript php jquery ajax wordpress

我正在 WordPress 4.7.2 上运行的网站中执行 AJAX 调用。我使用 wp_json_encode() 从处理请求的 PHP 函数返回一个数组。当我在 AJAX success 函数中打印数据 array 时,它完全符合预期。但当我尝试打印数组内的单个元素时,它给了我未定义

PHP处理函数是这样的

function ajaxHandler(){
     //do something
     $ret = array( 'score'=>$score );
     echo wp_json_encode( $ret );
     wp_die();
}

在我的 AJAX 中,

$.ajax({
    type: 'POST',
    url: ajaxurl,
    data: {'action': $my_Action},
    success: function(data) {
        console.log(data);
        console.log(data["score"]);
        //also tried console.log(data.score) with same result
    },
    error: function(data){
        console.log("not successful");
    }
});

Chrome 中的控制台登录

enter image description here

最佳答案

将响应数据解析为成功回调中的 javascript 对象:

success: function(data) {
    var data = JSON.parse( data );
    console.log(data);
    console.log(data["score"]);
    //also tried console.log(data.score) with same result
}

另一种方法是,将 dataType : 'json' 放入 ajax 属性中:

$.ajax({
  .....
  .....
  dataType : 'json',
  ......
});

关于javascript - 数组存在并已填充,但无法访问 AJAX 响应上的各个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42306131/

相关文章:

php - 这个ajax(带原型(prototype))有什么问题?

php - 在电子邮件中设置密码恢复时间

jquery - MVC 表单中的自定义样式 CSS

javascript - jquery deferred - 等到两个调用完成

javascript - ExtJS 的代码结构

javascript - typeof options == 'object' && options,为什么会返回对象值?

php - 如何用 PHP 压缩 XML?

javascript - Jquery html 传递一个值作为第三个参数

javascript - 无法使用 JQuery 触发的 PHP 写入 MySQL-DB

javascript - 使用 JavaScript/jQuery 将 BBcode 转换为 HTML