我想使用XMLHttpRequest來發送PUT請求,但我不知道如何傳遞參數。JS的等價curl -X PUT -d'data = {「keyname」:「keyvalue」}'
什麼,我想送的捲曲的版本是:
$ curl -u [email protected] -X PUT -d 'data={"keyname":"keyvalue"}' https://api.myurl.com/v1/action
我有一個身份驗證令牌撥打電話等什麼我想是這樣的:
var xhr = new XMLHttpRequest();
xhr.open("PUT", ROOT_URL + link + "?auth_token=" + token, true);
xhr.setRequestHeader("Cache-Control", "no-cache");
var data = 'data={"keyname":"' + keyvalue + '"}';
xhr.send(data);
但是,似乎不正確,因爲我得到一個500服務器錯誤回說
"data={\"keyname\":\"keyvalue\"}" does not have a valid root.
任何想法我做錯了什麼?
您可能必須在'內容Type'請求頭設置爲'應用程序/ x-WWW的形式urlencoded'(這樣服務器知道如何解釋數據)。 –
只需閱讀CURL'man'頁面,它表示在使用'-d'時內容類型標題會自動設置爲該值。所以這可能確實是問題所在。但請注意,服務器也可能直接接受JSON,在這種情況下,您只需發送'JSON.stringify(some_object)'並將內容類型頭設置爲'application/json'。 –