Parse ajax json response - PullRequest
       6

Parse ajax json response

0 голосов
/ 14 декабря 2018

Я не могу получить данные объекта JSON.

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

    public string GetVideoInfo(uint videoID)
    {
        ApiVideoInfo videoInfo = new ApiVideoInfo()
        {
            Likes = BitVidDb.GetLikes(videoID),
            Dislikes = BitVidDb.GetDislikes(videoID),
            Views = BitVidDb.GetViews(videoID),
        };

        return JsonConvert.SerializeObject(videoInfo);
    }

Если я вызываю API в браузере, он возвращает:

"{\" Views \ ": 396, \" Likes \ ": 1, \" Dislikes \ ": 0}"

Однако, когда я вызываю эту функцию ajax:

    $.ajax({
        url: '/API/Video/GetVideoInfo/25',
        dataType: 'application/json',
        complete: function (data) {
            var json = JSON.parse(data);
            alert(json["Views"]);
        },
    });

Это дает мне следующую ошибку:

SyntaxError: JSON.parse: неожиданный символ в строке 1 столбца 2 данных JSON

Я использовал JSON.stringify, чтобы преобразовать его встрока и выводит это:

{"readyState": 4, "responseText": "\" {\\ "Views \\": 396, \\ "Likes \\": 1, \\"Dislikes \\": 0} \ "", "status": 200, "statusText": "OK"}

Есть ли какой-то дополнительный шаг, который мне нужно предпринять, чтобы получить значения?Похоже, что запрос в порядке. Инструменты Chrome для разработчиков дают ответ в виде API:

JSON {"Views": 396, "Likes": 1, "Dislikes": 0}

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

Ян

1 Ответ

0 голосов
/ 14 декабря 2018

Вы можете анализировать только строки, а данные - это объекты.Чтобы получить json в виде строки, мне просто нужно было использовать data.responseText.

$.ajax({
    url: '/API/Video/GetVideoInfo/25',
    dataType: 'application/json',
    complete: function (data) {
        var json = JSON.parse(data.responseText);
        alert(json["Views"]);
    },
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...