未使用JSONP API

时间:2017-06-05 21:28:11

标签: javascript jquery json api

我对jQuery和Javascript相对较新,我正在尝试使用从API接收的信息创建一个对象。该对象应该为数组users中的每个用户保存一个基本信息对象。为此,我为每个用户进行API调用,然后将json传递给应该创建其属性的构造函数。但是,当我运行代码时,对象只有一个name属性。并且只针对第一个用户,而不是所有用户。

有人能告诉我我做错了什么吗?

以下是代码:

$(document).ready(function () {
    var url = "https://wind-bow.gomix.me/twitch-api/streams/";

    var users = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
    
    var streamersObj = {};
    
    for(var i = 0; i < users.length; i++) {
        console.log(users[i]);
        connectToApi(users[i]);
    }
        
    
    function StreamerObjCreate (jsonObj, name) {
       streamersObj[name] = name;
       streamersObj[name].onStream = jsonObj.stream;
       streamersObj[name].channel = jsonObj._links.channel;
       streamersObj[name].stream = jsonObj._links.self;
       console.log(streamersObj);    
    } 
  function connectToApi (target) {
      url = url + target + "?" + "callback=?";
    $.getJSON(url, function (json) {
        StreamerObjCreate(json, target);
    });
  } 
    console.log(streamersObj);
});

我刚开始学习,所以如果您有任何相关或无关的反馈,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

您正在创建一个字符串,然后为该字符串分配属性。尝试:

 function StreamerObjCreate (jsonObj, name) {
   streamersObj[name] = {
     name: jsonObj.name,
     onStream: jsonObj.stream,
     channel: jsonObj._links.channel,
     stream: jsonObj._links.self
   }
   console.log(streamersObj);    
} 

答案 1 :(得分:0)

您似乎每次都在connectToApi函数中覆盖url变量。试试这个

function connectToApi (target) {
    var targetUrl = url + target + "?" + "callback=?";
    $.getJSON(targetUrl, function (json) {
        StreamerObjCreate(json, target);
    });
}