具有多个参数的 XMLHttpRequest

XMLHttpRequest with multiple parameters

在我一直在使用的 Web 应用程序上,我一直在使用 xmlhttprequests 将单个参数传递给 Java servlet,如下所示:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'DCC?command=' + encodeURIComponent(command), true);
xhr.send(null);

问题是,我仍然不太理解语法,现在我需要用多个参数做一些类似的事情。这是怎么做到的?

您在上面的示例中传递的 URL 是:

'DCC?command=' + encodeURIComponent(command)

DCC部分实际上是网页路径的一部分。它很短,因为它是一条相对路径。完全限定的路径看起来像 www.sitename.com/DCC
之后的部分(在 ? 字符之后)称为查询字符串。这是 URL 的一部分,其中包含您要传递给服务器的数据(在 GET 事务中),它遵循以下模式:

a=somevalue&b=anothervalue&c=yetanother

因此将“&varnameA=valueA”添加到该字符串以同时传递 commandvarnameA:

xhr.open('GET', 'DCC?command=' + encodeURIComponent(command)+"&varnameA=valueA",true);

您可以继续处理 &varname=value 字符串,直到您的查询大约为 2000 个字符,因为这是浏览器通常开始崩溃的地方,因为 URL 太长了。
请记住对值中的任何特殊字符进行编码(这就是 encodeURIComponent() 的用途),否则您会遇到一些奇怪的行为。这意味着您要为每个要传递给服务器的额外 variable/value 对附加类似 +"&varnameA="+encodeURIComponent("valueA") 的内容。

语法是: xhr.open("GET", url, 真); 在 Url 中,您可以通过附加“&”

来传递多个参数

简单回答:

var url="index.php"+"?command="+cmd;
xhr.open("GET",url,true);

您可以添加更多参数,只需添加一个 ?每个变量名的前面。

您可以在发送调用中发送参数。

var xhr = new XMLHttpRequest();
xhr.open('GET', 'DCC', true);
xhr.send(JSON.stringify(parameters));

在java端使用InputStreamReader读取请求并反序列化对象。