Javascript 如何使用jQuery访问API返回的数据
我正在对一个API执行一个AJAX GET请求,该API返回我所在地区提供快递服务的所有商店。我需要检查数据,看看该地区是否有商店提供快递服务,但无法正确访问数据以执行任何检查,我不明白为什么 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”, “服务信息”:{ “履行类型”:“交付”, “预订类型”:“插槽”, “分发类型”:“交付
{
“数据”:{
“服务资格”:[
{
“访问点列表”:[
{
“当前时间”:空,
“货币”:空,
“接入点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(响应)一旦它在成功处理程序中可用。然后,您可以看到响应本身的清晰结构。您还可以在成功处理程序的第一行中放置断点,然后在浏览器控制台中,您将获得响应。然后您可以使用响应找到数据的正确路径。