我正在玩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>
答案 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”不适合您。