использование jquery.each и json - PullRequest
0 голосов
/ 24 июля 2011

У меня проблема с каждым jquery. Мой файл JSP содержит следующие строки:

`<script type="text/javascript" src="js/monopolyAL.js"></script>
...
<script type="text/javascript">
    $(this).ready(function() {
      // window.setTimeout(myTimerTask, 1000); // for a single timeout event
      window.setInterval(myTimerTask, 3000); // for periodical timeout events
      myTimerTask();
      });
 </script>

...

<table title="Player Information" id="playersDataTable">
                <tr>
                  <td>Player's Icon</td>
                  <td>Player's Name</td>
                  <td>Player's money</td>
                </tr>
                <tr>
                  <td id="player0Icon">bla</td>
                  <td id="player0name">bla</td>
                  <td id="player0money">bla</td>
                </tr>
` 

и так далее. соответствующий файл Js включает следующую соответствующую функцию:

 function myTimerTask() {
        jQuery.ajax({
                data: "",  // no data - can be ommitted
                url: "MonopolyAjaxServlet",
                timeout: 2000,
                error: function() {
                    console.log("Failed to send ajax");
                },
                success: function(JSONResponse) {
        var players=JSONResponse.players;
        var currPlayer;

         jQuery.each(players, function()
         {
            currPlayer=this;

               $("#player"+currPlayer+"name").text(currPlayer.name);
         })

           //"ver "+ver+" dice  "+dice;


                }
        });
    }

соответствующий ответ Json выглядит следующим образом:

 {
"pleyars":[{
    "id":0,
    "name": "mmm",
    "amount":"15"
},
{
    "id":1,
    "name": "mmm2",
    "amount":"152"
}]
}

но ожидаемое изменение имени не происходит. Я был бы очень признателен за любую помощь в этом вопросе.

Заранее спасибо, Лиор

Ответы [ 3 ]

1 голос
/ 24 июля 2011

вместо

jQuery.each(players, function()         
 {            currPlayer=this;               
 $("#player"+currPlayer+"name").text(currPlayer.name);         
 })

используйте

$(players).each(function(index,value){
currPlayer = value;
$("#player"+currPlayer+"name").text(currPlayer.name);
});

, если я правильно понял ваш вопрос

0 голосов
/ 24 июля 2011

Попробуйте это

function myTimerTask() {
        jQuery.ajax({
                data: "",  // no data - can be ommitted
                url: "MonopolyAjaxServlet",
                timeout: 2000,
                error: function() {
                    console.log("Failed to send ajax");
                },
                success: function(JSONResponse) {
                   var players=JSONResponse.players;

                   jQuery.each(players, function(i, curPlayer)
                   {
                      $("#player"+curPlayer.id+"name").text(curPlayer.name);
                   });
                }
        });
    }
0 голосов
/ 24 июля 2011

Попробуйте:

success: function(JSONResponse) {
   var players=JSONResponse.players;

     jQuery.each(players, function(i,currPlayer)
     {
           $("#player"+currPlayer.id+"name").text(currPlayer.name);
     })
...