Javascript XMLHttpRequest将要发送的数据放置在何处?

Javascript XMLHttpRequest将要发送的数据放置在何处?,javascript,Javascript,我这样尝试过,但在发出请求时,它没有向服务器发送任何数据 var data ={some:'data'}; var req = new XMLHttpRequest(); req.open("GET", url, true); req.send(data); XHR没有用于将对象转换为querystring的内置方法。另外,send()方法将一个参数作为请求体(用于POST数据)。GET请求没有请求正文,只有URL和标题 您可以轻松创建一个帮助器函数,将对象转换为查询字符串,

我这样尝试过,但在发出请求时,它没有向服务器发送任何数据

 var data ={some:'data'};     
 var req = new XMLHttpRequest();
 req.open("GET", url, true);
 req.send(data);

XHR没有用于将对象转换为querystring的内置方法。另外,
send()
方法将一个参数作为请求体(用于POST数据)。GET请求没有请求正文,只有URL和标题

您可以轻松创建一个帮助器函数,将对象转换为查询字符串,如下所示:

function convertToQuery(data){
    var first = true, q = '', amp = '';
    for(var key in data){
        amp = first ? '' : '&';
        q += amp + key + '=' + encodeURIComponent(data[key]);
        first = false;
    }

    return q;
}


var data ={some:'data'};
var url = 'page.html?' + convertToQuery(data);
var req = new XMLHttpRequest();
req.open("GET", url, true);
req.send(null);

您可以在GET方法中将数据作为参数传递,方法如下:

var data ={some:'data'};     
var req = new XMLHttpRequest();
req.open("GET", url + '?some=' + data.some, true);
req.send();
但请注意,这是一个薄弱的解决方案,因为如果您需要在不久的将来添加更多参数,您将需要编辑此URL,而且,URL格式的数据也没有正确转义(您应该使用
encodeURIComponent()
函数正确转义每个字符串)

解决此问题的简单代码段如下所示:

function getEscapedURL(url, data) {
    url += "?";
    for(key in data) {
        url += (key + '=' + encodeURIComponent(data[key]) + '&'); 
    }
    return url;
}
提醒:如果您发送到服务器的数据可能被认为是敏感数据(登录、个人、财务等),则不应使用此方法

而应考虑使用基于动作的POST或PUT方法。GET方法应该用于查询服务器的资源、数据或信息(这就是为什么命名为查询字符串),而POST和PUT应该用于向服务器提交敏感信息

 var data ={some:'data'};     
 var req = new XMLHttpRequest();
 req.open("GET", url, true);
 req.send(data);

指出,你可能想考虑下一个方法:

var data ={some:'data'};     
var req = new XMLHttpRequest();
req.open("POST", url, true);
req.send(JSON.stringify(data));

在这种方法中,您将数据序列化为一个JSON字符串,服务器将接收该字符串,然后服务器应解析该字符串并使用该数据。

您需要将字符串发送到
。send()
,而不是对象。因此,像
?some=data&somemore=moredata
?send对GET请求没有意义,使用POST,火箭危险品在开始时说关闭
,那么你应该是个好人。@roman:你不能使用
.send()
GET
?编辑:看来你不能。