web-dev-qa-db-ja.com

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フィールドを取得するにはどうすればよいですか?

29
Midhuna

JSON.parse() を使用します。

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

最初にJSONのresponseTextを解析する必要があります。そのためには、 JSON.parse() を使用する必要があります。その後、キーを使用してアクセスできます。

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

Dataオブジェクトから電子メールまたはその他のフィールドを取得するには、次を使用します。

data.Data[0].email

作業例

3
Fizzix

しばらくの間、次を使用できます:

xhr.responseJSON

解析は必要ありません。それが役に立てば幸い

2
Igneel64

最初にJSONオブジェクトへの応答を解析してから、応答からデータフィールドを取得する必要があります

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

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 );
    },
  });
0
Eugen Konkov