【问题标题】:XMLHttpRequest with multiple parameters具有多个参数的 XMLHttpRequest
【发布时间】:2016-07-21 14:37:22
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript java servlets xmlhttprequest


    【解决方案1】:

    您在上例中传递的 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() 的用途),否则您会遇到一些奇怪的行为。这意味着您要为要传递给服务器的每个附加变量/值对附加 +"&varnameA="+encodeURIComponent("valueA") 之类的内容。

    【讨论】:

      【解决方案2】:

      语法是: xhr.open("GET", url, true); 在 Url 中,您可以通过附加“&”来传递多个参数

      【讨论】:

        【解决方案3】:

        简单回答:

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

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

        【讨论】:

        • 我相信你的意思是&,是吗?而且您仍然需要进行 URI 编码。
        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2021-09-24
          • 1970-01-01
          • 1970-01-01
          • 2011-04-15
          • 2011-08-01
          • 1970-01-01
          • 2021-08-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多