2014-07-03 14 views
14

ho XMLHttpRequest() funzione data sottoCome ottenere il campo "Dati" da xhr.responseText?

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

dove xhr.responseText restituisce valore come

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

Come posso ottenere il campo Data dal responseText?

risposta

24

uso JSON.parse(), come:

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

Per prima cosa è necessario analizzare responseText in JSON, per questo è necessario utilizzare JSON.parse(). Quindi è possibile accedervi utilizzando la chiave.

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

Per ottenere semplicemente l'e-mail, o in qualsiasi altro campo, dall'oggetto Data, utilizzare il seguente:

data.Data[0].email 

WORKING EXAMPLE

0

dovrebbe analizzare prima la risposta a json object, quindi ge t il campo dati dalla risposta

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

Per qualche ora è possibile utilizzare:

xhr.responseJSON 

senza alcuna analisi necessario. spero che aiuti

Problemi correlati