2017-02-19 9 views
0

fetch()を使用して、自分の検索ページを強化するAPIエンドポイントを照会します。検索結果のリストをJSON形式で返します。javascriptのfetch()関数に追加データを送信するにはどうすればいいですか

また、ユーザーから送信された現在のクエリをAPIに渡したいとします。古い実装ではjqueryとgetJSONが使用されていました。 getJSONのためのドキュメントを見ると、それは私がdata変数に渡すことができますことを言う:

 
data 
Type: PlainObject or String 
A plain object or string that is sent to the server with the request. 

Looking at the docsフェッチのために、私は私の要求の一部としてデータを渡すするかどうかはわかりません。だから私の質問は、どのように私の要求と一緒にサーバーに送信される文字列を渡すのですか?

EDIT:「/ search /?q = Something」のようにリクエストURLにクエリを追加して送信できると思います。誰か良い方法がありますか?

+0

次のように渡すことができますか?ドキュメントで私はフェッチとパラメータを送信するために何かを見つけることができません。ポストgetJSON ajaxを取得し、さらに多くのパラメータを持っています – mtizziani

答えて

3

フェッチに関するドキュメントのBody sectionを見ると、リクエストで送信されたデータを指定するために使用できるいくつかのタイプの値がリストされています。 FormDataを使用して

例:あなたは(あなたがあなたのケースでやってすることができるようです)GETやHEADリクエストにbodyオプションを使用することはできません

var fd = new FormData(); 
fd.append('q', 'Something'); 

fetch('/search', { 
    method : "POST", 
    body : fd 
}) 
.then(...) 

注意。そのような状況では、URLSearchParamsを使用してパラメータを構築することができます。

var params = new URLSearchParams(); 
params.append('q', 'Something'); 

fetch('/search/?' + params.toString(), { 
    method: 'GET' 
}) 
.then(...); 
+0

プレーンな 'javascript'オブジェクトは' body'でテストされているか期待されていませんhttps://github.com/w3c/web-platform-tests/blob/master/fetch /api/request/request-idl.html、https://github.com/w3c/web-platform-tests/blob/master/fetch/api/basic/request-upload.js – guest271314

+1

@ guest271314私が 'fetch Chromeコンソールで、空の本文と 'Content-Length' 0でリクエストが送信されます。 – JLRishe

+0

はい、 'javascript'オブジェクトを' JSON.stringify() 'に渡す必要があります。http://stackoverflow.com/questions/40939857/fetch-with-readablestreamも参照してください。 – guest271314

0

は、あなただけの固定の情報を取得するために構築フェッチされていない

fetch('/users', { 
    method: 'POST', 
    headers: { 
    'Content-Type': 'application/json' 
    }, 
    body: JSON.stringify({ 
    name: 'Hubot', 
    login: 'hubot', 
    }) 
}) 
関連する問題