Как получить поле "Данные" из xhr.responseText?

У меня есть функция XMLHttpRequest(), приведенная ниже

var searchFriendRequests = function (userid) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'http://localhost:6344/api/Registeration/searchFriendrequests?userid=' + userid, false);
    xhr.setRequestHeader("Content-Type", "text/xml");
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                var data = xhr.responseText;
            }
        }
    };
    xhr.send(null);
}

где xhr.responseText возвращает значение как

{
    "$id": "1",
    "ContentEncoding": null,
    "ContentType": null,
    "Data": [
        {
            "$id": "2",
            "email": "[email protected]"
        },
        {
            "$id": "3",
            "email": "[email protected]"
        }
    ],
    "JsonRequestBehavior": 1,
    "MaxJsonLength": null,
    "RecursionLimit": null
}

Как я могу получить поле Data из responseText?

Ответы

Ответ 1

используйте JSON.parse(), например:

var data=xhr.responseText;
var jsonResponse = JSON.parse(data);
console.log(jsonResponse["Data"]);

Ответ 2

Сначала вам нужно проанализировать responseText в JSON, для этого вы должны использовать JSON.parse(). Затем вы можете получить к нему доступ с помощью клавиши.

var json = JSON.parse(xhr.responseText);
var yourData = json.Data; // or json["Data"]

Ответ 3

Чтобы просто получить электронное письмо или любое другое поле из объекта Data, используйте следующее:

data.Data[0].email

РАБОЧИЙ ПРИМЕР

Ответ 4

В настоящее время вы можете использовать:

xhr.responseJSON

без необходимости синтаксического анализа. надеюсь, что это поможет

Ответ 5

сначала нужно проанализировать ответ на объект json, а затем получить поле данных из ответа

var responseText = JSON.parse(xhr.responseText),
     data = responseText.Data;

Ответ 6

Когда вы делаете запрос AJAX, вы можете предоставить опцию dataType:

dataType: 'json'

Для такого запроса при получении ответа:

Если указано json, ответ анализируется с использованием jQuery.parseJSON перед передачей в качестве объекта обработчику успеха. Разобранный объект JSON становится доступным через свойство responseJSON объекта jqXHR.

Вы можете получить доступ к своим данным, как:

var data =  xhr.responseJSON

Полный пример:

  $ajax.({
    dataType: 'json',
    success: function( xhr ) {
      var yourData =  xhr.responseJSON;
      console.log( yourData );
    },
  });

Ответ 7

var jsonResponse = JSON.parse(xhr.responseText);
console.log(jsonResponse);