2016-07-14 17 views
5

我想發佈一些數據到服務器,但我不知道如何找回響應數據。從獲取數據 - >承諾 - >響應

我有以下代碼:

fetch(url, { 
    method: 'POST', 
    headers: { 
    'Accept': 'application/json', 
    'Content-Type': 'application/json' 
    }, 
    body: JSON.stringify({ 
    email: login, 
    password: password, 
    }) 
}).then(function(a){ 
    console.log(a); 
}) 

它打印出它包含諸如身體(ReadableByteStream),bodyUsed(假),OK(真)數據Response,狀態(200),... 但我找不到我回來的數據,無處可尋。當我打開Chrome開發者控制檯 - 網絡時,我在那裏看到響應數據。

我在做什麼錯?

我一直在尋找一些資源如何獲取,承諾,...工作,但我找不到任何寫得很好。

+1

[獲取承諾永遠不會執行]的可能重複(http://stackoverflow.com/questions/36005787/fetch-promise-never-gets-executed) – Marco

回答

11

您還有其他方法可用於獲取響應,如.json().blob()。這些方法返回一個承諾,您可以撥打.then()

fetch(url, { 
    method: 'POST', 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' 
    }, 
    body: JSON.stringify({ 
     email: login, 
     password: password, 
    }) 
}) 
    .then(function (a) { 
     return a.json(); // call the json method on the response to get JSON 
    }) 
    .then(function (json) { 
     console.log(json) 
    }) 

退房some documentation on using fetch,並在該response object works如何fetch調用一些其他文件。