Javascript Jquery/Ajax-解析JSON响应
我在玩api。它只生成json格式的随机用户数据。然而,我似乎无法解析响应。每当我这样做,我只是得到未定义的对象 这是我的密码:Javascript Jquery/Ajax-解析JSON响应,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我在玩api。它只生成json格式的随机用户数据。然而,我似乎无法解析响应。每当我这样做,我只是得到未定义的对象 这是我的密码: <script> $.ajax({ url: 'http://api.randomuser.me/', dataType: 'json', success: function (data) { console.log(data); alert(data.us
<script>
$.ajax({
url: 'http://api.randomuser.me/',
dataType: 'json',
success: function (data) {
console.log(data);
alert(data.user);
}
});
</script>
<div id="user"></div>
$.ajax({
网址:'http://api.randomuser.me/',
数据类型:“json”,
成功:功能(数据){
控制台日志(数据);
警报(data.user);
}
});
您不能向不同于您自己的域(即执行脚本的域)发出AJAX请求。这是由于安全原因造成的
如果您想这样做,请创建一个PHP脚本(或其他内容),从api.randomuser.me检索数据,然后使用AJAX请求PHP脚本(与JS脚本位于同一位置) 每当使用不熟悉的JSON时,我建议在 在本例中,API调用返回一个JSON对象,其中包含一个包含用户对象的结果数组
data.results[0].user;
将为您提供要查找的用户对象,您可以在代码中使用该对象
为了在警报对话框中查看对象的内容,首先需要将对象传递到JSON.stringify()
$.ajax({
网址:'http://api.randomuser.me/',
数据类型:“json”,
成功:功能(数据){
console.log(dataObj);
警报(JSON.stringify(dataObj.results[0].user));
}
});
是的,它与相同的域策略冲突。您必须使用js脚本文件来执行此操作。或者使用“jsonp”来完成。由于json数据来自第三方web服务器,“jsonp”在本例中不适用于您。请仔细查看返回的json。您正在获取正确解码的数据,但数据结构与预期不匹配
user
字段位于名为results
的数组中,您必须使用索引访问该数组。例如,要获取第一个用户:
var user = data.results[0].user;
如果您请求多个结果,也可以使用循环结构。但我得到的是数据响应。@Mark fgiobergia的回复基于randomuser.me可能通过跨源资源共享()绕过的同一源安全策略,因为他们的服务性质。@Mark,我现在必须运行,但是今晚晚些时候我会回到你的问题上来,如果你还没有得到一个好的答案,我会帮你解决。是的。请看我对你的问题的评论,了解如何解析它的示例。好吧,我错了。无论如何,您的问题在于访问结果的方式<代码>数据。用户不在API返回的数据中。另一方面,如果您尝试访问,比如说,
data.results[0].user.gender,您将得到想要的结果;)编辑:哎呀,我还没意识到@JasonP在我之前就解决了这个问题示例:data.results[0].user.name.first
该域设置了正确的CORS标头以允许跨域AJAX,因此不应出现跨域问题。如果数据类型:'JSON'
数据
已经是javascript对象,则应将数据解码为JSON,对其进行解析将导致错误。@nullability您是正确的,这将简化我的回答
var user = data.results[0].user;