将javascript变量传递给servlet

Passing javascript variable to servlet

本文关键字:servlet javascript 变量      更新时间:2023-09-26

如何将var从javascript传递到servlet。是的,我知道您可以在servlet端使用getParameter,但我首先需要做一些javascript操作,然后它需要将新变量传递给servlet。

请参阅我的Javascript示例:

function openBrWindowAndSubmit() { 
  var textBodyValue = encodeURIComponent(document.getElementById("textBody").value);
  alert(textBodyValue); //returns empty
  document.forms[0].submit();
  var textBodyValue = encodeURIComponent(document.getElementById("textBody").value);
  alert(textBodyValue); //works
}

正如您在上面的示例中看到的,第一个"alert"块返回空,但第二个块返回正确的编码值,因为已经调用了document.forms[0].submit。那么,有没有一种方法可以将第二个变量"textBodyValue"(位于document.forms[0].submit之外)获取到servlet?我在servlet端调用它:

String test = req.getParameter("textBody"); 

这是表单标记中的JSP,它在点击时调用函数:

 <textarea id="textBody" name="textBody"></textarea>        
 <input type="button" onClick="openBrWindowAndSubmit();" value="Click Here to Preview Email">

这个问题有什么解决办法吗?

我一直在尝试将javascript函数更改为:

function openBrWindowAndSubmit() { //v2.0
  document.forms[0].target = "_blank";
  document.getElementById("action").value = "view_template";
  var textBodyValue = encodeURIComponent(document.getElementById("textBody").value);
  alert(textBodyValue);
  document.forms[0].submit();
  var textBodyValue = encodeURIComponent(document.getElementById("textBody").value);
  alert(textBodyValue);
  $.ajax({
      url: 'http://localhost:8080/restricted/comm/Email',
      data: textBodyValue,
    //  processData: false,
    //  contentType: false,
      type: 'POST',
      success: function(data){
        alert(data);
      }
    }); 
}

这行得通吗?在到达$ajax标记时,我得到了一个未定义的错误?

作为一个想法。不知道它是否正确;)但是您可以在jQueryapi页面上查看它。

$('#idOfTheForm').on('submit', function(e){
    e.preventDefault();
    data = { key : val , key2 : val2 };
    $.ajax({
    type: "post",
    data: data,
    url : "",
    success : function(response){
                  console.log("return code was 200");    
               },
    error : function(jqXHR, textStatus, errorThrown){
                  console.log(errorThrown);
            }
    });
    return false;
}