Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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访问API返回的数据_Javascript_Jquery_Arrays_Json_Api - Fatal编程技术网

Javascript 如何使用jQuery访问API返回的数据

Javascript 如何使用jQuery访问API返回的数据,javascript,jquery,arrays,json,api,Javascript,Jquery,Arrays,Json,Api,我正在对一个API执行一个AJAX GET请求,该API返回我所在地区提供快递服务的所有商店。我需要检查数据,看看该地区是否有商店提供快递服务,但无法正确访问数据以执行任何检查,我不明白为什么 API返回的数据的精简版本如下: { “数据”:{ “服务资格”:[ { “访问点列表”:[ { “当前时间”:空, “货币”:空, “接入点id”:“3242342-6dc1-43d8-b3d0-234234”, “服务信息”:{ “履行类型”:“交付”, “预订类型”:“插槽”, “分发类型”:“交付

我正在对一个API执行一个AJAX GET请求,该API返回我所在地区提供快递服务的所有商店。我需要检查数据,看看该地区是否有商店提供快递服务,但无法正确访问数据以执行任何检查,我不明白为什么

API返回的数据的精简版本如下:

{
“数据”:{
“服务资格”:[
{
“访问点列表”:[
{
“当前时间”:空,
“货币”:空,
“接入点id”:“3242342-6dc1-43d8-b3d0-234234”,
“服务信息”:{
“履行类型”:“交付”,
“预订类型”:“插槽”,
“分发类型”:“交付”,
“优先级”:0,
“承运人”:“拥有”,
“履行选项”:“交付”,
“位置类型”:“主页”,
“服务时间”:0,
“是重复出现的插槽”:false,
“enable_express”:false,
“是无人值守的插槽”:正确,
“is_flex_slot”:false
},
{
“当前时间”:空,
“货币”:空,
“接入点id”:“2342442-3387-4e1d-9eaa-234242”,
“服务信息”:{
“履行类型”:“内部提货”,
“预订类型”:“插槽”,
“分发类型”:“接收存储”,
“优先级”:0,
“承运人”:“NA”,
“履行选项”:“提货”,
“地点类型”:“商店”,
“服务时间”:0,
“是重复出现的插槽”:false,
“enable_express”:正确,
“是无人值守的插槽”:false,
“is_flex_slot”:false
},
“当前时间”:“2021-06-07T11:24:39Z”,
“货币”:“英镑”
},
“状态代码”:200,
“状态消息”:“请求的输入已成功执行。”
}
我用于获取数据的呼叫:

                $.ajax({
                    type: 'GET',
                    dataType: "json",
                    url: query,
                    data: "",
                    success: function(data)
                    {
                        //Check for express delivery
                        if(data.status_code == 200) {
                            console.log(data);
                        }
                    },
                    error: function(data)
                    {
                        //Check for API error
                        if(data.status == 400){
                            console.log(data.responseJSON.errors[0].message);
                        }               
                    
                    }
                })
到目前为止,数据正在被记录到控制台。但是当我试图访问它或我想要使用的部分时,我得到了控制台错误

我已尝试从控制台复制属性路径,并在console.log中使用它:
console.log(data.service\u合格性[0].accesspoint\u列表)
但是,请获取错误消息:
无法读取未定义的属性“0”

我只尝试了
data.service\u合格性
,但这只给了我
未定义的错误

事实上,即使我只是尝试访问
data.currency
我也会得到
未定义的

为什么我不能访问从API返回的数据

                   type: 'GET',
                   dataType: "json",
                   url: query,
                   data: "",
                   success: function(data)
                   {
                       //Check for express delivery
                       if(data.status_code == 200) {
                        console.log(response.data.ervice_eligibility[0].accesspoint_list);
                       }
                   }
查看您提供的上述代码,您在成功处理程序中接收到的
数据
对象似乎并没有直接引用您接收到的响应中的
数据
对象。如果名称相同,可能会造成混淆。 我认为,如果您尝试使用
data.data.service\u合格性
访问
data
对象内的属性,您将能够访问它。有关更多信息,请参阅下面的代码:

                    type: 'GET',
                    dataType: "json",
                    url: query,
                    data: "",
                    success: function(response)
                    {
                        //Check for express delivery
                        if(response.status_code == 200) {
                            console.log(response.data.service_eligibility[0].accesspoint_list);

                      }
                    }

试想一下,如果您的数据在成功处理程序中可用,这意味着从api获取数据的异步操作已成功完成。您只需调试数据对象的结构,并找出您访问值的方式中缺少的内容或错误。人们的行为可能会有所不同,包括代码永远不能!:)

尝试:
data.data.service\u资格[0].accesspoint\u列表
有效,为什么我必须放入
数据。数据
?因为返回响应在
数据
变量中,并且您的
accesspoint\u列表
嵌套如下:
数据>服务_资格>accesspoint\u列表
这实际上非常有用,所以我调用了我的repsonse数据?是的,尝试使用相同的co如上所述进行de或尝试console.log(响应)一旦它在成功处理程序中可用。然后,您可以看到响应本身的清晰结构。您还可以在成功处理程序的第一行中放置断点,然后在浏览器控制台中,您将获得响应。然后您可以使用响应找到数据的正确路径。