如何使用 XMLHTTPRequest 传递变量

新手上路,请多包涵

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

所以或多或少:

 XMLHttpRequest("GET", "blahblah.psp?variable1=?" + var1 + "?variable2=" + var2, true)

原文由 Steven Matthews 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 410
2 个回答

如果你想使用 GET 将变量传递给服务器,那就是。请记住正确转义(urlencode)它们!

如果您不希望变量可见,也可以使用 POST。

一个完整的样本是:

 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 查看您检索到的内容。

原文由 TJHeuvel 发布,翻译遵循 CC BY-SA 3.0 许可协议

手动格式化查询字符串适用于简单情况。但是当有很多参数时,它会变得乏味。

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

 function formatParams( params ){
  return "?" + Object
        .keys(params)
        .map(function(key){
          return key+"="+encodeURIComponent(params[key])
        })
        .join("&")
}

您将以这种方式使用它来构建请求。

 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/

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

原文由 James Forbes 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题