【发布时间】:2012-11-19 06:25:36
【问题描述】:
我正在尝试使用 XMLHttpRequest 发送 PUT 请求,但我不确定如何传递参数。
我要发送的 curl 版本是:
$ curl -u me@myurl.com -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.
关于我做错了什么有什么想法吗?
【问题讨论】:
-
您可能必须将
Content-Type请求标头设置为application/x-www-form-urlencoded(以便服务器知道如何解释数据)。 -
只需阅读 CURL
man页面,它会说在使用-d时内容类型标头会自动设置为该值。所以这可能确实是问题所在。但请注意,服务器也可能直接接受 JSON,在这种情况下,您真的只想发送JSON.stringify(some_object)并将内容类型标头设置为application/json。
标签: javascript curl xmlhttprequest