我有 session key ,它是我从 REST API 调用中获得的 JavaScript 变量。我需要在 servlet 中调用我的 Java 代码并将该键作为参数传递。我可以使用什么 JavaScript 函数来做到这一点?

请您参考如下方法:

几种方式:

  1. 使用 window.location 触发 GET 请求。需要注意的是它是同步的(因此客户端将看到当前页面正在更改)。

    window.location = "http://example.com/servlet?key=" + encodeURIComponent(key); 
    

    请注意内置 encodeURIComponent() 函数在传递请求参数之前对请求参数进行编码的重要性。

  2. 使用 form.submit() 触发 GET 或 POST 请求。需要注意的是它是同步的。

    document.formname.key.value = key; 
    document.formname.submit(); 
    

    <form name="formname" action="servlet" method="post"> 
        <input type="hidden" name="key"> 
    </form> 
    

    或者,您也可以只设置现有表单的隐藏字段,等待用户提交。

  3. 使用 XMLHttpRequest#send() 在后台触发异步请求(也称为 Ajax)。下面的示例将调用 servlet 的 doGet()

    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", "http://example.com/servlet?key=" + encodeURIComponent(key)); 
    xhr.send(null); 
    

    下面的例子将调用 servlet 的 doPost()

    var xhr = new XMLHttpRequest(); 
    xhr.open("POST", "http://example.com/servlet"); 
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    xhr.send("key=" + encodeURIComponent(key)); 
    
  4. 使用 jQuery发送跨浏览器兼容的 Ajax 请求(以上 xhr 代码仅适用于真实浏览器,为了 MSIE 兼容性,您需要添加一些困惑 ;))。

    $.get("http://example.com/servlet", { "key": key }); 
    

    $.post("http://example.com/servlet", { "key": key }); 
    

    请注意,jQuery 本身已经对请求参数进行透明编码,因此您不需要在此处使用 encodeURIComponent()

无论哪种方式,key 都只能通过 servlet 中的 request.getParameter("key") 获得。

另见:


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!