首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用XMLHTTPRequest传递变量

如何使用XMLHTTPRequest传递变量
EN

Stack Overflow用户
提问于 2011-11-09 19:59:30
回答 7查看 124.9K关注 0票数 53

如何使用XMLHTTPRequest将变量发送到服务器?我是否可以像?variable1=?variable2=一样,将它们添加到GET请求的URL的末尾?

所以或多或少:

代码语言:javascript
复制
XMLHttpRequest("GET", "blahblah.psp?variable1=?" + var1 + "?variable2=" + var2, true)
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-11-09 20:00:52

如果您希望使用GET将变量传递给服务器,那么这将是可行的方法。记住正确地转义(urlencode)它们!

如果你不想让你的变量可见,也可以使用POST。

完整的示例如下:

代码语言:javascript
复制
var url = "bla.php";
var params = "somevariable=somevalue&anothervariable=anothervalue";
var http = new XMLHttpRequest();

http.open("GET", url+"?"+params, true);
http.onreadystatechange = function()
{
    if(http.readyState == 4 && http.status == 200) {
        alert(http.responseText);
    }
}
http.send(null);

要测试这一点,(使用PHP)您可以使用var_dump $_GET查看您检索到的内容。

票数 59
EN

Stack Overflow用户

发布于 2015-07-30 08:05:00

对于简单的情况,手动格式化查询字符串就可以了。但是当有许多参数时,它可能会变得单调乏味。

您可以编写一个简单的实用函数来为您构建查询格式。

代码语言:javascript
复制
function formatParams( params ){
  return "?" + Object
        .keys(params)
        .map(function(key){
          return key+"="+encodeURIComponent(params[key])
        })
        .join("&")
}

您可以这样使用它来构建一个请求。

代码语言:javascript
复制
var endpoint = "https://api.example.com/endpoint"
var params = {
  a: 1, 
  b: 2,
  c: 3
}

var url = endpoint + formatParams(params)
//=> "https://api.example.com/endpoint?a=1&b=2&c=3"

有很多实用函数可以用来操作URL,如果你的项目中有JQuery,你可以试试http://api.jquery.com/jquery.param/

它类似于上面的示例函数,但处理的是递归序列化嵌套对象和数组。

票数 52
EN

Stack Overflow用户

发布于 2019-07-17 10:40:23

如果您对字符串连接敏感,并且不需要与IE兼容,您可以使用URLURLSearchParams

代码语言:javascript
复制
const target = new URL('https://example.com/endpoint');
const params = new URLSearchParams();
params.set('var1', 'foo');
params.set('var2', 'bar');
target.search = params.toString();

console.log(target);

或者转换整个对象的参数:

代码语言:javascript
复制
const paramsObject = {
  var1: 'foo',
  var2: 'bar'
};

const target = new URL('https://example.com/endpoint');
target.search = new URLSearchParams(paramsObject).toString();

console.log(target);

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8064691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档