javascript - 如何在$.ajax方法的success属性中访问对象的元素?

标签 javascript php jquery ajax

function getReportedInfo(id) {
    $.ajax({
        url: 'includes/get_data.php',
        type: 'POST',
        data: {id:id},
        dataType: 'json',
        success: function(data) {
            console.log(data);
        }
    });
};

从 get_data.php 脚本返回的 JSON 对象是:

{
    id: 5, 
    username: "Anthony", 
    status: "accupied"
}

如果我执行console.log(data.length),我就可以获得数据对象的长度。但是,当我在 success 属性中 console.log(data) 时,我可以看到该对象。 如果我执行 console.log(data.username) ,我将无法访问数据对象的元素,这样做在控制台中显示未定义。 我在函数 getReportedInfo 的范围之外创建了一个变量 data1,并将通过 success 属性检索到的数据分配给 当我尝试在函数外部显示 data1 的内容后,这个变量出现了。

最佳答案

听起来data是一个字符串而不是一个对象。您可以使用 JSON.parse 将其转换为对象。尝试以下代码。

function getReportedInfo(id) {
    $.ajax({
        url: 'includes/get_data.php',
        type: 'POST',
        data: {id:id},
        dataType: 'json',
        success: function(data) {
            var dataObject = JSON.parse(data);
            console.log(dataObject.username);
        }
    });
};

编辑

在下面的评论中与OP讨论后,确定返回的对象data的结构如下,并且已经是对象形式(不是字符串)

{
    "0": {
        id: 5, 
        username: "Anthony", 
        status: "accupied"
    }
}

因此下面的代码应该可以工作。

function getReportedInfo(id) {
    $.ajax({
        url: 'includes/get_data.php',
        type: 'POST',
        data: {id:id},
        dataType: 'json',
        success: function(data) {
            console.log(data["0"].username);
        }
    });
};

关于javascript - 如何在$.ajax方法的success属性中访问对象的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47931083/

相关文章:

Javascript/jQuery 防止双重事件触发

php - 为 php mysql 查询创建缓存

javascript - 根据用户选择显示摘要而不保存在数据库中

javascript - 在 django 中使用 javascript 进行 ajax 调用

javascript - 如何识别 IE 浏览器的内部版本号和子内部版本号?

php - 成功进入数据库的消息

php - Symfony 2 将验证移至实体,使用相关实体进行验证

php - 对于使用 PHP 的简单应用程序,Websocket 相对于 AJAX 的优势

javascript - 是否可以在其他人的页面上呈现我页面上输入的值?

javascript - HTML 规范在哪里声明 <template> 的内容是惰性的?