Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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 如何在单击时向页面追加/显示/呈现数据_Javascript_Jquery_Html_Json_Angularjs - Fatal编程技术网

Javascript 如何在单击时向页面追加/显示/呈现数据

Javascript 如何在单击时向页面追加/显示/呈现数据,javascript,jquery,html,json,angularjs,Javascript,Jquery,Html,Json,Angularjs,我想从API获取数据,并将其显示在index.html页面上。做这件事最好的方法是什么?寻找多种方式,可以是jquery,也可以是使用angular进行数据绑定。我似乎想不出一个函数来显示我得到的数据。我从两个不同的玩家那里获取了两个不同的数据,我想并排显示它们。JSON数据由API返回 /**Part of Index.html**/ <body ng-app="lolvs" ng-controller="MainControl

我想从API获取数据,并将其显示在index.html页面上。做这件事最好的方法是什么?寻找多种方式,可以是jquery,也可以是使用angular进行数据绑定。我似乎想不出一个函数来显示我得到的数据。我从两个不同的玩家那里获取了两个不同的数据,我想并排显示它们。JSON数据由API返回

                              /**Part of Index.html**/
<body ng-app="lolvs" ng-controller="MainController">

    <div class="throwdown">

        <h1> LoL THROWDOWN </h1>
        <div class="summonerNames">
            <input id="summonerOne" ng-model="summonerOne" placeholder="summoner name">
            <button class="start" ng-click="start()">vs</button>
            <input id="summonerTwo" ng-model="summonerTwo" placeholder="summoner name">
        </div>

                                    /**app.js**/

(function(){
    'use-strict'

var mainCtrl = function mainCtrl($scope, $rootScope, MainFactory) {
    $scope.start = MainFactory.start;

    $rootScope.$on('gotStats', function (e, m) {
        console.log('arguments >>', arguments);

        $scope.player1 = {
            totalChampionKills : 0,
            totalDeathsPerSession : 0,
            totalAssists : 0,
            totalSessionsWon : 0,
            totalSessionsLost :0,
            totalMinionKills: 0,
            totalTurretsKilled: 0,
        };

        $scope.apply();
    });
};

var mainFactory = function ($http, $rootScope) {
    var api = 'api_key=***************************';

    var add = function(data, status, headers) {
        var stats = {
            totalChampionKills : 0,
            totalDeathsPerSession : 0,
            totalAssists : 0,
            totalSessionsWon : 0,
            totalSessionsLost :0,
            totalMinionKills: 0,
            totalTurretsKilled: 0,
        };

        var champions = data.champions;

        for(var i = 0; i < champions.length; i++) {
            var champ = champions[i].stats;

            for(stat in stats) {
                if(champ[stat]) {
                    stats[stat] += champ[stat]
                }
            }
        }
    };

    var start = function(name) {
        var options = { 
            url: 'https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/' + name + '?' + api,
            type: 'GET',
            success: summonerOption
        };

        $http(options);
    };

    var summonerOption = function(data, status, headers) {
        var name = Object.keys(data)[0];

        var newOption = {
            url: 'https://na.api.pvp.net/api/lol/na/v1.3/stats/by-summoner/' + data[name].id + '/ranked?season=SEASON4&' + api,
            type: 'GET',
            success: add
        };

        $http(newOption);
    };

    return {
        start: start
    }


};



angular.module('lolvs', [])
    .controller('MainController', ['$scope', '$rootScope', 'MainFactory', mainCtrl])
    .factory('MainFactory', ['$http', '$rootScope', mainFactory])

})();
返回的是什么类型的数据?如果它是一个json数组,您可能希望在将整个内容打印到您的网页之前对其进行迭代。 然而,理论上,您应该在成功的ajax调用后处理数据,这似乎是在按index.html中的后执行的

这可能是这样的:

var newOption = {
    url: 'https://na.api.pvp.net/api/lol/na/v1.3/stats/by-summoner/' + data[name].id + '/ranked?season=SEASON4&' + api,
    type: 'GET',
    success: function(data) {
        $('.containerForData').html('<div class="data-wrap">' + data + '</div>');
    }
};
不幸的是,你的问题不是很清楚,但我希望这能有所帮助