Javascript 从twitch获取json API。当我不在线时获取未捕获的类型错误。JSON更改
当我在twitch上在线流媒体时,我试图从JSON中获取一个值。问题是当我不在线时,我会得到一个错误,Javascript 从twitch获取json API。当我不在线时获取未捕获的类型错误。JSON更改,javascript,arrays,json,ajax,Javascript,Arrays,Json,Ajax,当我在twitch上在线流媒体时,我试图从JSON中获取一个值。问题是当我不在线时,我会得到一个错误,uncaughttypeerror,因为当我在线/离线时JSON会改变。当返回值更改时,如何处理它 $.ajax({ headers: { 'Client-ID' : 'xxx' }, url: api_url + "?user_id=" + target, contentType: "application
uncaughttypeerror
,因为当我在线/离线时JSON会改变。当返回值更改时,如何处理它
$.ajax({
headers: {
'Client-ID' : 'xxx'
},
url: api_url + "?user_id=" + target,
contentType: "application/json",
dataType: 'json',
success: function(result){
console.log(result);
document.getElementById("second").innerHTML = result.data[0].id;
}
当我在线时,这个功能非常有效。但是当我离线的时候
结果。数据[0]。id
不存在,并提供给我:
未捕获的TypeError:无法读取未定义的属性“id”
我希望大家能理解我的意思,我在网上和StackOverflow上搜索了很多年的答案。在您尝试处理数据之前,我会添加一个检查,我还会检查错误,它可能不会返回错误,但一个可能的解决方案可能如下所示:
$.ajax({
headers: {
'Client-ID' : 'xxx'
},
url: api_url + "?user_id=" + target,
contentType: "application/json",
dataType: 'json',
success: function(result, err){
if (!err && result && result.data && result.length) {
document.getElementById("second").innerHTML = result.data[0].id;
}
});
因为if语句将从左到右解析,它将首先检查错误,然后如果结果是真实的(即,不等于未定义的),则可以安全地假设您可以检查result.data是否真实,最后检查长度是否真实,这意味着您至少有一个元素,并且可以安全地访问它
您可以在此处找到有关“truthy”的更多信息在您尝试对数据执行任何操作之前,我会添加一个检查,我还会检查错误,它可能不会返回错误,但一个可能的解决方案可能如下所示:
$.ajax({
headers: {
'Client-ID' : 'xxx'
},
url: api_url + "?user_id=" + target,
contentType: "application/json",
dataType: 'json',
success: function(result, err){
if (!err && result && result.data && result.length) {
document.getElementById("second").innerHTML = result.data[0].id;
}
});
因为if语句将从左到右解析,它将首先检查错误,然后如果结果是真实的(即,不等于未定义的),则可以安全地假设您可以检查result.data是否真实,最后检查长度是否真实,这意味着您至少有一个元素,并且可以安全地访问它
如果(result.data&&result.data.length)在“成功”之前或之后,您可以在此处找到有关“truthy”的更多信息为什么不在分配它之前添加检查?我试图使用if(result.data[0].id==0),但这给了我一个错误。它应该在success
if(result.data&&result.data.length)文档中。getElementById(“第二”).innerHTML=result.data[0].id
谢谢Jaydip。简单有效。工作得很好。感谢您帮助像我这样的初学者。为什么不在“成功”之前或之后指定一个复选框if(result.data&&result.data.length)
?我试图使用if(result.data[0].id==0),但这给了我一个错误。它应该在successif(result.data&&result.data.length)文档中。getElementById(“第二”).innerHTML=result.data[0].id
谢谢Jaydip。简单有效。工作得很好。感谢您帮助像我这样的初学者。请忽略err部分,这可能不是API的工作方式if&&完美工作。谢谢你帮助像我这样的初学者!请随意忽略err部分,它可能不是API的工作方式if&&完美地工作。谢谢你帮助像我这样的初学者!