Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery/Ajax-解析JSON响应_Javascript_Jquery_Ajax_Json - Fatal编程技术网

Javascript Jquery/Ajax-解析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

我在玩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>

$.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;