2017-02-19 20 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爲取,我不知道如何在數據傳遞我的請求的一部分。所以我的問題是,我如何傳入一個字符串,並將其與我的請求一起發送到服務器?

編輯:我想我可以附加查詢請求的URL,如「/搜索/?q =東西」,併發送。有沒有人有更好的方法?

+0

不能只獲取構建以獲取固定的信息?在文檔中,我無法找到任何通過提取發送參數的內容。有getJSON ajax和更多的參數 – mtizziani

回答

3

如果您查看提取文檔的Body section,它列出了可用於指定請求中發送的數據的幾種類型的值。

示例使用FormData

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

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

請注意,您不能使用在GET或HEAD請求body選項(這似乎你可以在你的情況做)。在這種情況下,你可以使用URLSearchParams建立參數:

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

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

Plain'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 ('/ save',{ method:「POST」, body:{data:5} })'在我的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', 
    }) 
}) 
相關問題