2016-11-02 5 views
0

Ich verwende die neue Fetch-API, um Objekte von einer API abzurufen. Das ist mein Code.Das Objekt kann nicht mithilfe von Promises abgerufen werden.

getUserYguid(){ 
    fetch(this.myapi, { 
    credentials: "include", 
    method: 'get', 
    headers: { 
     "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" 
    }, 
    body: null 
    }).then(function(response){ 
    console.log(response.status) 
    console.log(response.json()); 
    let obj = response.text(); 
    console.log(obj.name); 
    }).catch(function(error){ 
    console.log('Request failed', error); 
    }); 
} 

Als ich Response.Status nennen, es funktioniert gut, und ich kann die Statusmeldung als 200 sehen, wenn ich rufe response.json() oder response.text(), i das komplette Objekt zu sehen sein ist zurückgekommen. Das Problem ist, dass die nächste Codezeile nicht funktioniert. Wenn ich versuche, eine Eigenschaft aus dem Objekt abzurufen, wie

console.log(obj.name);

ich, undefined

Antwort

1

response.text() ein Versprechen zurück, so dass Sie then ein weiteres Mal

fetch(url, opts).then(function(response){ 
    response.text().then(function(txt){ 
    console.log(txt) 
    }) 
}) 
verwenden

und durch das Aussehen Ihrer obj.name Verwendung scheint es, als ob Sie eine JSON-Antwort wollen ... keinen Text, so müssen Sie tun, um:

fetch(url, opts).then(function(response){ 
    response.json().then(function(obj){ 
    console.log(obj.name) 
    }) 
}) 

get ist die Standardmethode, so dass keine Notwendigkeit zu geben ... und Blob ist null, so dass für nicht notwendig ist, entweder ...

Verwandte Themen