JS相当于curl -X PUT -d'data = {“keyname”:“keyvalue”}'

时间:2012-11-19 06:25:37

标签: javascript curl xmlhttprequest

我正在尝试使用XMLHttpRequest发送PUT请求,但我不确定如何传递参数。

我要发送的卷曲版本是:

$ 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.

关于我做错的任何想法?

1 个答案:

答案 0 :(得分: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