将javascript变量传递给servlet

时间:2014-10-15 10:11:22

标签: java javascript jsp servlets struts

如何将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

}

正如您在上面的示例中所看到的那样,第一个"警报" block返回空,但第二个返回正确的编码值,因为已经调用了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标签时遇到未定义的错误?

1 个答案:

答案 0 :(得分:0)

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

$('#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;
}