0

我正在尝试使用 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.

关于我做错了什么的任何想法?

4

1 回答 1

1

那是因为 "data={\"keyname\":\"keyvalue\"}"不代表一个有效的 json 对象。

尝试使用

  xhr.send({keyname:keyvalue});, passing a valid json object

或者

  var data = {keyname:keyvalue};
  xhr.send(JSON.stringify(data));, passing a json object string representation 
于 2012-11-19T06:39:54.683 回答