Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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 如何在Ajax中循环到DTO的对象中?_Javascript_Jquery - Fatal编程技术网

Javascript 如何在Ajax中循环到DTO的对象中?

Javascript 如何在Ajax中循环到DTO的对象中?,javascript,jquery,Javascript,Jquery,我试图从列表中获取所有玩家,但整个GetMapping都是围绕玩家DTO构建的。我要循环的数据是存储在DTO中的“玩家”列表,如下所示: { PLAYERS: [ { player0 {parameters...} }, { player1 {parameters...} }, ... ] } 以下是我在JS中的ajax代码: //GET ALL PLAYERS function getAllPlayers() { d

我试图从列表中获取所有玩家,但整个GetMapping都是围绕玩家DTO构建的。我要循环的数据是存储在DTO中的“玩家”列表,如下所示:

{
    PLAYERS: [
        { player0 {parameters...} },
        { player1 {parameters...} },
        ...
    ]
}
以下是我在JS中的ajax代码:

//GET ALL PLAYERS

function getAllPlayers() {

    document.getElementById("erase_repeated_results").innerHTML = ""; //to erase info I don't want to store
    document.getElementById("fullInfo").innerHTML = "";
    document.getElementById("data").innerHTML = "";
    document.getElementById("sameRoles").innerHTML = "";

    $.ajax({
        type: "GET",
        url: "http://localhost:8081/dices/players",
        contentType: "application/json",
        dataType: "json",
        success: function (data) {

            for (var j = 0; j < data.length; j++) {

                document.getElementById("fullInfo").innerHTML += "Complete info of player " + (j+1) + ": " + "<br />" + "<br />" +
                    "The ID of this player is: " + data[j].id + "<br />" +
                    "The name of this player is: " + data[j].name + "<br />" +
                    "The register date of this player is: " + data[j].registerDate + "<br />" +
                    "The total amount of dice rolls of this player is: " + data[j].totalDiceRolls + "<br />" +
                    "The total amount of games won of this player is: " + data[j].gamesWon + "<br />" +
                    "The success rate of this player is: " + data[j].successRate + "<br />";

                console.log(data[j]);
            }
        },
        error: function () {

            alert("Something went wrong! Maybe you are entering parameters not related to our Database!");
        }
    });
}
//获取所有玩家
函数getAllPlayer(){
document.getElementById(“erase_repeated_results”).innerHTML=“”;//删除我不想存储的信息
document.getElementById(“fullInfo”).innerHTML=“”;
document.getElementById(“数据”).innerHTML=“”;
document.getElementById(“sameRoles”).innerHTML=“”;
$.ajax({
键入:“获取”,
url:“http://localhost:8081/dices/players",
contentType:“应用程序/json”,
数据类型:“json”,
成功:功能(数据){
对于(var j=0;j“+”
”+ 此播放机的ID为:“+data[j]。ID+”
”+ 此播放机的名称为:“+data[j]。名称+”
”+ 此播放机的注册日期为:“+data[j]。registerDate+”
”+ 该玩家掷骰子的总数为:“+data[j]。totalDiceRolls+”
”+ 该玩家赢得的游戏总数为:“+data[j].gamesWon+”
”+ 该玩家的成功率为:“+data[j]。成功率+”
”; console.log(数据[j]); } }, 错误:函数(){ 警报(“出现问题!可能您输入的参数与我们的数据库无关!”); } }); }
下面我附上了一个屏幕截图,这样你可以在我调试它时看到它是如何工作的,你将在范围部分看到我所说的内容

如何仅在DTO的数组参数中输入


在数据结构中,是
PLAYERS
属性,它是一个数组<代码>数据是一个对象,包含一个名为
PLAYERS
的属性。因此,循环通过这是没有意义的。只需在玩家阵列中循环:

for (var j = 0; j < data.PLAYERS.length; j++) {
  document.getElementById("fullInfo").innerHTML += "Complete info of player " + (j+1) + ": " + "<br />" + "<br />" +
      "The ID of this player is: " + data.PLAYERS[j].id + "<br />" +
      "The name of this player is: " + data.PLAYERS[j].name + "<br />" +
      "The register date of this player is: " + data.PLAYERS[j].registerDate + "<br />" +
      "The total amount of dice rolls of this player is: " + data.PLAYERS[j].totalDiceRolls + "<br />" +
      "The total amount of games won of this player is: " + data.PLAYERS[j].gamesWon + "<br />" +
      "The success rate of this player is: " + data.PLAYERS[j].successRate + "<br />";

  console.log(data.PLAYERS[j]);
}
for(var j=0;j“+”
”+ 此播放机的ID为:“+data.PLAYERS[j].ID+”
”+ 此播放机的名称为:“+data.PLAYERS[j].name+”
”+ 此播放机的注册日期为:“+data.PLAYERS[j].registerDate+”
”+ 该玩家掷骰子的总数为:“+data.PLAYERS[j].totalDiceRolls+”
”+ 该玩家赢得的游戏总数为:“+data.PLAYERS[j].gamesWon+”
”+ 该玩家的成功率为:“+data.PLAYERS[j].successRate+”
”; console.log(data.PLAYERS[j]); }
代码是文本。请以文本形式发布代码,而不是截图。“帮助”部分中的“如何询问”页面特别提到不要发布代码的图像,它们对试图回答的人没有帮助。请更新您的问题以获得更积极的回答。谢谢。@ADyson抱歉,我只添加了图像,因为我认为它比代码更有用,现在我也添加了我的ajax代码,谢谢!好的,谢谢。我将在下面添加一个答案。它非常有效!非常感谢。我认为PLAYERS只是一个常规字符串,正如在我的DTO中一样,就是这样,DTO中的第二个参数是数组本身。因此,DTO的第一个参数字符串并不仅仅是字符串,对吗?我还有一个问题,如果玩家是数组的“名称”,我怎么能像你发布的那样,使用更改名称的数组呢?让我解释一下,现在我和你在这里做的一样,但是每个玩家的“游戏”也是游戏的DTO,所以每个玩家都有自己的游戏数组:
{PETER:[{game0{parameters…},{game1{parameters…}},}
。。。因此,根据它的ID,我可以得到一个或另一个用户。我不知道这是否是使用DTO的正确方法,因为现在我意识到,也许最好的解决方案就是将它们的名称替换为DTO数组的主名称,然后将这些信息输入到数组中。我希望我能解释清楚。。。对不起我的英语,谢谢!“我如何能做到与你发布的相同,但使用一个改变名称的数组”……实际上,我的建议是不要生成具有不可预测结构的数据集。正如您所预测的,在编写代码来处理它时,这将开始让您头疼。相反,我可能会输出一个游戏数组,并将玩家的姓名(或ID)作为数组中每个游戏对象的属性。这样你就可以知道每个游戏都属于谁,如果需要的话,你可以编写代码来过滤数据,只显示特定玩家的游戏。是的,我已经这样做了,API几乎完成了,工作非常完美。谢谢你的知识!