dongpaozhi5734
2017-12-21 18:53
浏览 115
已采纳

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

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

The JSON object returned from the get_data.php script is:

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

I am able to the length of the data object if I do console.log(data.length). However, I can see the object when I console.log(data) in the success property. I am not able to access the elements of the data obejct if I do console.log(data.username), doing this displays undefined in the console. I created a variable, data1, outside the scope of the function getReportedInfo and assigned the data retrieved via the success property to this variable after I tried to display the constents of data1 outside the function.

图片转代码服务由CSDN问答提供 功能建议

  function getReportedInfo(id){
 $ .ajax({
 url:'includes / get_data  .php',
类型:'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),则无法访问数据obejct的元素,这样做会显示未定义的 控制台。 我在函数getReportedInfo的范围之外创建了一个变量data1,并在我尝试在函数外部显示data1的内容之后,将通过success属性检索的数据分配给 this变量。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • doyrte8419 2017-12-21 18:57
    最佳回答

    Sounds like data is a string not an object. You can convert this to an object by using JSON.parse. Try the following code.

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

    Edit

    After discussing with OP in comments below, it was determined the object returned data was in a structure like the following, and is already in an object form (not a string)

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

    Therefor the following code should work.

    function getReportedInfo(id) {
        $.ajax({
            url: 'includes/get_data.php',
            type: 'POST',
            data: {id:id},
            dataType: 'json',
            success: function(data) {
                console.log(data["0"].username);
            }
        });
    };
    
    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题