如何从xhr.responseText获取“数据”字段?

时间:2014-07-03 06:32:38

标签: javascript jquery xmlhttprequest

我有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": "anu@gmail.com"
        },
        {
            "$id": "3",
            "email": "anu@gmail.com"
        }
    ],
    "JsonRequestBehavior": 1,
    "MaxJsonLength": null,
    "RecursionLimit": null
}

如何从Data获取responseText字段?

7 个答案:

答案 0 :(得分:39)

使用JSON.parse(),例如:

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

答案 1 :(得分:9)

首先需要在JSON中解析responseText,为此你应该使用JSON.parse()。然后你可以使用密钥访问它。

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

答案 2 :(得分:3)

要从Data对象中简单地获取电子邮件或任何其他字段,请使用以下命令:

data.Data[0].email

WORKING EXAMPLE

答案 3 :(得分:2)

现在有一段时间你可以使用:

xhr.responseJSON

无需任何解析。希望它有所帮助

答案 4 :(得分:0)

应首先解析对json对象的响应,然后从响应中获取数据字段

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

答案 5 :(得分:0)

当您提出ajax请求时,您可以提供dataType option

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

答案 6 :(得分:-1)

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