【问题标题】:Object is not being created with info from JSONP API未使用来自 JSONP API 的信息创建对象
【发布时间】:2017-06-05 21:28:10
【问题描述】:

我对 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);
});

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

【问题讨论】:

  • 只是注释:$.getJSON 函数不会向回调函数发送 JSON,所以不要使用“json”作为变量名,这会造成混淆。称它为“数据”更准确。

标签: javascript jquery json api


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-02-10
      • 2012-08-11
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 2021-12-25
      相关资源
      最近更新 更多