Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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 从twitch获取json API。当我不在线时获取未捕获的类型错误。JSON更改_Javascript_Arrays_Json_Ajax - Fatal编程技术网

Javascript 从twitch获取json API。当我不在线时获取未捕获的类型错误。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

当我在twitch上在线流媒体时,我试图从JSON中获取一个值。问题是当我不在线时,我会得到一个错误,
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),但这给了我一个错误。它应该在success
if(result.data&&result.data.length)文档中。getElementById(“第二”).innerHTML=result.data[0].id
谢谢Jaydip。简单有效。工作得很好。感谢您帮助像我这样的初学者。请忽略err部分,这可能不是API的工作方式if&&完美工作。谢谢你帮助像我这样的初学者!请随意忽略err部分,它可能不是API的工作方式if&&完美地工作。谢谢你帮助像我这样的初学者!