理解ajax中的http请求和嵌套函数

时间:2017-12-07 20:13:51

标签: javascript jquery ajax

我正在引用此代码来构建一个抽搐的查看器应用程序,我很难理解:



$(document).ready(function() {

  let usernames = ["user1", "user2", "user3", "user4"];

  usernames.forEach(function(user) {
    let http = "https://api.twitch.tv/kraken/streams/" + user;

    function getAjax(getdata) {
      $.ajax({
        url: http,
        headers: {
          'Client-ID': 'myclientid'
        },
        success: function(data) {
          getdata(data)
        }
      });
    }
  });
})




  1. '标题'做到了吗?我抽搐了一下,无法找到详细的描述。它似乎不会给我的http请求提供/添加任何内容。 Twitch说标题"安全地识别我的应用程序。"但不确定这是什么意思。我认为如果它与API密钥类似,它应该包含在请求中。

  2. ' getdata'这段代码的功能呢?它只是存储我从ajax请求收到的数据吗?

1 个答案:

答案 0 :(得分:2)

1)标题包含在请求中。您应该能够在开发人员工具中看到它们;这就是它在Firefox中的样子

Headers

2)getdata是一个回调函数,由消费者传递给getAjax,然后可以根据需要对数据进行操作,例如......

getAjax(function(data){      //用数据做点什么    })

另请注意,您在循环的每次迭代中重新声明该函数,但实际上并未在任何地方调用它。你可能想要更像这样的东西......

$(document).ready(function() {
  let usernames = ["user1", "user2", "user3", "user4"];

  function getAjax(url, getdata) {
    $.ajax({
      url: url,
      headers: {
        'Client-ID': 'myclientid'
      },
      success: function(data) {
        getdata(data)
      }
    });
  }

  usernames.forEach(function(user) {
    let http = "https://api.twitch.tv/kraken/streams/" + user;
    getAjax(http, function(data) {
      // do something with data
    })
  });
})