Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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 API和JSON.parse的HTTP GET/POST请求_Javascript_Jquery_Json_Xmlhttprequest_Twitch - Fatal编程技术网

Javascript 使用Twitch API和JSON.parse的HTTP GET/POST请求

Javascript 使用Twitch API和JSON.parse的HTTP GET/POST请求,javascript,jquery,json,xmlhttprequest,twitch,Javascript,Jquery,Json,Xmlhttprequest,Twitch,因此,首先我不熟悉ajax和JSON http get请求等。我尝试使用新的Twitch API获取有关拖缆的信息 var token = $.ajax({ 'url' : 'https://api.twitch.tv/kraken/oauth2/token?client_id=XXX&client_secret=XXX&grant_type=client_credentials', 'type' : 'POST', 'success' : function(d

因此,首先我不熟悉ajax和JSON http get请求等。我尝试使用新的Twitch API获取有关拖缆的信息

var token = $.ajax({
   'url' : 'https://api.twitch.tv/kraken/oauth2/token?client_id=XXX&client_secret=XXX&grant_type=client_credentials',
   'type' : 'POST',
   'success' : function(data) {
     console.log(data.access_token);
     localStorage.setItem('token', data.access_token)
   }
});

var test = $.ajax({
    headers: {'Authorization': 'Bearer ' + localStorage.getItem('token')},
    'url' : 'https://api.twitch.tv/helix/users?login=nightbot',
    'type' : 'GET',
    'success' : function(data) {
      console.log(data); // returns an obj with an data array, length 1
      console.log(data[0]); // undefined
      console.log(data.display_name); // undefined
      console.log(JSON.parse(data)); // syntax error
      console.log(JSON.parse(data[0])); // syntax error
      //$( "#result" ).load( data.display_name ) //to do
    }
});
数据:

我觉得这条路有点乱。是吗


我的第二个问题是,我无法访问GET请求中的数据。输出告诉我有数据,但不知何故我无法访问它,我不知道为什么。

您需要了解AJAX调用的工作原理,第一个
$。AJAX
调用执行一个请求,然后立即执行
$。AJAX
调用,并且
本地存储中的数据将不一致

从第一个
$执行。ajax
调用第二个进程
https://api.twitch.tv/helix/users?login=nightbot

这样,您的调用是一致的,并且将在
localStorage
中共享一致的数据

Twitch
/users
端点 根据Twitch文档(
/users
端点),响应遵循以下结构:

    {
      "data": [
        {
            "_id": 45454
            "display_name": "Ele"
            .
            .
            .
            .
        }
    ]
}
因此,您必须按如下方式访问该阵列:

console.log(data.data[0].display_name);
在这个代码段中,第一个调用是
$。ajax
调用执行一个名为
executeUserProess
的函数

var token = $.ajax({
  'url': 'https://api.twitch.tv/kraken/oauth2/token?client_id=XXX&client_secret=XXX&grant_type=client_credentials',
  'type': 'POST',
  'success': function(data) {
    console.log(data.access_token);
    localStorage.setItem('token', data.access_token);

    executeUserProess();
  }
});

var executeUserProess = function() {
  var test = $.ajax({
    headers: {
      'Authorization': 'Bearer ' + localStorage.getItem('token')
    },
    'url': 'https://api.twitch.tv/helix/users?login=nightbot',
    'type': 'GET',
    'success': function(data) {
      console.log(data); // returns an obj with an data array, length 1
      console.log(data.data[0].display_name);
      //$( "#result" ).load( data.display_name ) //to do
    }
  });
};
输出告诉我有数据,但不知何故我无法访问它,我不知道为什么

根据OP声明:

console.log(data); // returns an obj with an data array, length 1
因此,要访问数组的第一个元素,应该使用下面的语句

console.log(data.data[0]);

您将在ajax中的“data”属性传递到哪里?您是否知道这两个调用都是异步的,因此在进行测试调用时令牌调用不会完成?您能否共享
数据的内容
?请使用类似
错误:函数(jqXHR,exception){…}的ajax错误函数
以了解您的ajax调用是否出现任何错误。@archer是的,我已经知道,但我希望我将以某种方式工作,然后解决该问题。这就是解决我的一个问题:)。这是一种常见的方式吗?@kami1991这是一种方式,但还有其他方式,比如承诺。