jQuery Ajax / ASP.NET MVC JsonResult с использованием динамики, как получить доступ к ключам JSON? - PullRequest
0 голосов
/ 31 мая 2011

Вот строка JSON, возвращенная из моего действия:

[{"Key":"Likes","Value":1},{"Key":"Loves","Value":0},{"Key":"Dislikes","Value":0},{"Key":"Message","Value":"Your vote has been changed"}]

Вот как я пытаюсь получить к ним доступ:

$.ajax({
    type: "POST",
    url: '/voteUrl',
    data: { id : '37', vote : $(this).attr('id') },
    dataType: "json",
    success: function(result) {
        $('#like').text(result.Likes);
        $('#love').text(result.Loves);
        $('#dislike').text(result.Dislikes);
    }
});

Существуют теги span с идентификаторами "Нравится", "Любовь" и "Не нравится". На действии есть динамический результат со свойствами, такими как:

results.Likes = 1;
results.Loves = 0;
results.Dislikes = 0;
results.Message = "Your vote has been changed";

Но теги span не обновляются с правильными значениями. Вызов ajax работает, FireBug показывает, что возвращена строка JSON, и я считаю, что я пытаюсь получить доступ к ключам правильно, results.PropertyName. Чего не хватает?

Ответы [ 2 ]

3 голосов
/ 31 мая 2011

Сделай что-нибудь подобное

success: function(data) {
    var results = [];
    for(var i=0; i < data.length; i++){    
        results[data[i]["Key"]] = data[i]["Value"];
    }
    $('#like').text(result.Likes);
    $('#love').text(result.Loves);
    $('#dislike').text(result.Dislikes);
}
1 голос
/ 31 мая 2011

Вы возвращаете массив, поэтому, чтобы показать все, вы должны использовать цикл for.Также в вашем текущем коде вы не обращаетесь к массиву по ключу.Правильный код может быть:

success: function(result) {
 for(var i=0;i<result.length;i++)
        $('#like').text(result[0].Value); //got likes in first iteration
        ...
}

или если у вас фиксированная длина, тогда получите значение напрямую вместо forloop или сравнив ключ, если вы хотите использовать for loop

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