JQuery.when包含多个JSON变量

JQuery.when包含多个JSON变量,jquery,json,getjson,when-js,Jquery,Json,Getjson,When Js,我有一段代码,它使用$.getJSON()从2个URL检索JSON,并将结果保存为变量。然后我使用$.when()和then()从这些变量中获取数据。但是,这仅在我一次执行一个操作时有效,每个操作都有自己的$.when(),当我同时使用这两个操作时不起作用 var player = $.getJSON("http://api.hivemc.com/v1/player/" + $user + "/timv"); var game = $.getJSON("http://api.hi

我有一段代码,它使用
$.getJSON()
从2个URL检索JSON,并将结果保存为变量。然后我使用
$.when()
then()
从这些变量中获取数据。但是,这仅在我一次执行一个操作时有效,每个操作都有自己的
$.when()
,当我同时使用这两个操作时不起作用

var player = $.getJSON("http://api.hivemc.com/v1/player/" + $user + "/timv");
        var game = $.getJSON("http://api.hivemc.com/v1/game/timv");

        $.when(player,game).then(function(maindata, data){
            $('#1').text(maindata.total_points);
            $('#2').text(maindata.i_points);
            $('#3').text(maindata.t_points);
            $('#4').text(maindata.d_points);
            $('#5').text(maindata.role_points);
            $('#6').text(maindata.most_points);

            if(maindata.detectivebook == true)
                $('#7').text("Yes");
            else
                $('#7').text("No");

            $flare = maindata.active_flareupgrade;
            $flare = $flare.charAt(0).toUpperCase() + $flare.slice(1).toLowerCase();
            $('#8').text($flare);
            $('#9').text(maindata.title);
            var d = new Date(maindata.lastlogin * 1000);
            var n = d.toISOString(); 
            $('#10').text(d.getDate() + "/" + d.getMonth() + "/" + d.getFullYear());
        });
我得到的控制台错误是:

jquery latest.min.js:2未捕获类型错误:无法读取的属性“length” 未定义 在Function.each(jquery latest.min.js:2) 反对。(dr:112) 在Function.each(jquery latest.min.js:2) 反对。(dr:108) 反对。(jquery-latest.min.js:2) 在j(jquery latest.min.js:2) 在Object.fireWith[as resolveWith](jquery latest.min.js:2) 在x(jquery latest.min.js:4) 在XMLHttpRequest.b(jquery latest.min.js:4)`


谁能告诉我我做错了什么?谢谢。

确定原因如下:当您使用
then
时,您在success函数中声明的参数不是数据本身,而是包含数据、状态字符串和XHR对象的数组。因此,在您的例子中,
maindata
获取
[Object,“success”,Object]
。 用以下代码替换这部分代码,它应该可以工作(另外,在获取数据之前,可能需要检查状态):


你在控制台中收到任何错误吗?我在开发时使用000Webhost来托管我的站点,我不确定如何在浏览器中查看控制台按F12,或者右键单击某个元素并单击“检查”,我将把错误放在主帖子中,虽然我不确定没有完整的代码会有多大意义,但您也可以在
then
中添加第二个函数参数来处理错误:
then(函数成功(maindata,data){/*…*/},函数错误(params){/*…*/})
(参数的设置取决于在promise中调用fail()的方式)非常感谢你的帮助!
$.when(player,game).then(function(mainresponse, response){
    var maindata = mainresponse[0];
    var data = response[0];