2017-07-25 7 views
0

hereのようにJavascriptのfetchメソッドを使用してPOSTリクエストを作成しようとしています。Javascriptのフェッチを使用してPOSTリクエストデータを取得する方法

通常、jsonレスポンスの代わりにReadableStreamが返されます。たとえば、jQuery、Angularなどで得られる応答などです。

私のコードはここにある:https://jsbin.com/vuwilaviva/edit?css,js,output

var request = new Request('https://httpbin.org/post', { 
    method: 'POST', 
    mode: 'cors', 
    data: 'The sky is green', 
    redirect: 'follow', 
    headers: new Headers({ 
     'Content-Type': 'text/plain' 
    }) 
}); 


// Now use it! 
fetch(request).then(function(resp) { 
    console.log('Logging response...') 
    console.log(resp); 
}); 

テストAPIエンドポイントは、などの郵便配達、カール、と正常に動作しますので、私は私が間違っfetchを使用しています確信している、そしてそれはAPIの問題ではありません(それは単なる文字列)はdataとして渡されたものを返す:

enter image description here

編集:現在の答えは、実際にデータを取得できません。 POSTリクエストによって返さ - それはログインjsonでどこにも見つからません:

enter image description here

+0

のために使用すべきです。 –

+0

このリンクは、レスポンスからJSONを取得する方法を示しています。** JSON **を処理するヘッダのセクションで... –

+0

@MikeMcCaughanは機能しません。 – VSO

答えて

2

response.jsonあなたは `body`プロパティにデータを渡すこの

fetch(request) 
.then(response => response.json()) 
.then(json => console.log(json)); 
+2

楽しい事実:あなたは今、クロムの中で '.then(console.log)'を使うことができます、他の人たち(彼らは 'this'を固定しました) – dandavis

+0

@pethel:ここに2つのもの - 1.これは私に必要なものを私に与えません - jsonの応答文字列は表示されません。 2.あなたの答えを説明することができます、なぜ2つの声明?呼び出しがすでに非同期ではないのですが、なぜ応答がストリームであるのですか? – VSO

+0

@VSOあなたの問題はcontenttype response.json() - > response.text()です。コンテンツをテキストとしてログに記録することができます。 application/jsonに変更しようとしますが、サーバーコードも調整する必要があります。 – pethel

関連する問題