возвращение двухмерного массива как объекта json и его повторение - PullRequest
0 голосов
/ 12 марта 2012

Я возвращаю двумерный массив из моего действия mvc в мое представление, и я хочу использовать функцию $ .each () на объекте, чтобы перебрать его.Почему-то я не могу заставить это работать.

мое действие:

   [HttpPost]
    public JsonResult ShowTiles(TileModel tile)
    {

        MapModel map = HomeController.mapModel;
        map.MapTilesArray[tile.OldX, tile.OldY].Value = 4;

        var player = map.MapTilesArray[tile.OldX, tile.OldY].Player; 
        map.MapTilesArray[tile.X, tile.Y].Player = player;
        player.Position = new Point(tile.X,tile.Y);

        map.MapTilesArray[tile.X, tile.Y].Value = 2;

        return Json(map.MapTilesArray);
    }

моя модель:

    public MapModel()
    {

        MapTilesArray = new TileModel[10,10];

        for (int i = 0; i < 10; i++)
        {
            for (int j = 0; j < 10; j++)
            {
                MapTilesArray[i, j] = new TileModel();
                MapTilesArray[i, j].Value = 1;

            }
        }

        userNameList = new List<string>();
    }

мой взгляд:

   $.ajax({
            beforeSend: function () { ShowAjaxLoader(); },
            url: "/Game/ShowTiles",
            type: "POST",
            contentType: "application/json;charset=utf-8",
            dataType: "json",
            data: JSON.stringify(tile),
            success: function (data) {
                HideAjaxLoader(), 
                $.each(data, function (index, item) {
                    if (item.Value === 0) {
                        $("#" + item.Y + item.X).css("background-color", "brown");
                    }
                    else if (item.Value === 1) {
                        $("#" + item.Y + item.X).css("background-color", "black");
                    }
                    else if (item.Value === 2) {
                        $("#" + item.Y + item.X).css("background-color", "green");
                    }
                    else if (item.Value === 3) {
                        $("#" + item.Y + item.X).css("background-color", "blue");

                    }
                     else if (item.Value === 4) {
                        $("#" + item.Y + item.X).css("background-color", "purple");

                    }

                }), MovePlayer(newPosition.left + 15, newPosition.top + 15)
            },
            error: function () { showErrorMsg(); }
        });
    });

1 Ответ

0 голосов
/ 12 марта 2012

попробуй вот так

в вашем контроллере эхо массива

$data = array(
   array(
      'title' => 'My title' ,
      'name' => 'My Name' ,
      'date' => 'My date'
   ),
   array(
      'title' => 'Another title' ,
      'name' => 'Another Name' ,
      'date' => 'Another date'
   )
);

echo json_encode($data);

тогда вы можете получить его в своем представлении и повторить как это

var data = $.parseJSON(data);


for(x in data)
{
   alert(data[x]['title]);
   alert(data[x]['name]);
   alert(data[x]['date]);
}

попытайтесь понять и применить к вашему сенарио

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...