Jquery / Ajax - 解析JSON响应

时间:2014-08-08 20:46:30

标签: javascript jquery ajax json

我正在玩http://randomuser.me/documentation.html api。它只是以json格式生成随机用户数据。但是,我似乎无法解析响应。无论何时,我都会得到未定义的对象。

这是我的代码:

<script>
  $.ajax({
        url: 'http://api.randomuser.me/',
        dataType: 'json',
        success: function (data) {
            console.log(data);
            alert(data.user);
        }
    });
</script>

<div id="user"></div>

4 个答案:

答案 0 :(得分:2)

仔细查看返回的JSON。您正在获取正确解码的数据,但数据结构与您的预期不符。

user字段位于名为results的数组中,您必须使用索引访问该数组。例如,要获得第一个用户:

var user = data.results[0].user;

如果您要请求多个结果,也可以使用循环结构。

答案 1 :(得分:0)

您不能向与您自己的域(即执行脚本的域)不同的域发出AJAX请求。这是出于安全原因。

如果你想做类似的事情,创建一个从api.randomuser.me检索数据的PHP脚本(或其他东西),然后使用AJAX来请求PHP脚本(你在同一个地方托管的脚本)你的JS脚本)。

答案 2 :(得分:0)

每当使用不熟悉的JSON时,我建议在http://jsonlint.com

上很好地格式化它

在这种情况下,API调用返回一个JSON对象,其结果数组包含用户对象。

data.results[0].user;

将为您提供您正在寻找的用户对象,您可以在代码中使用该对象。

为了在警告对话框中查看对象的内容,首先需要将对象传递给JSON.stringify()。

<script>
  $.ajax({
        url: 'http://api.randomuser.me/',
        dataType: 'json',
        success: function (data) {
            console.log(dataObj);
            alert(JSON.stringify(dataObj.results[0].user));
        }
    });
</script>

答案 3 :(得分:0)

是的,它与相同的域策略冲突。您必须使用js脚本文件来执行此操作。或者使用“jsonp”来做到这一点。由于json数据来自第三方Web服务器,因此在这种情况下“jsonp”不适合您。