使用JS从textarea获取价值并将其传递,而无需将页面重新加载到服务器(jsp)

时间:2018-06-26 18:56:58

标签: javascript html jsp

我正在使用这段代码在onclick事件之后用一个调用两个函数的按钮在我的JSP页面上显示TextArea。

<textarea id="textarea"></textarea>

<button style="float: right;" onclick="jQuery('#reDiv').load(' #reDiv'); doSth();">Get Text</button>

功能1:

<div id="reDiv"><%=new java.util.Date().toString()%></div>

功能2:

<script>
function doSth() {
var text = $("#textarea").val(); //value of textarea
<%=text%> //error
}
</script>

功能1正常工作。

在功能2中,我试图将刚从TextArea获得的值传递给服务器,而无需重新加载页面。稍后,我的目标是调用一个方法并显示数据而无需刷新页面

我知道,错误是JS是客户端,而JSP是服务器端。 但是我该如何解决呢?

1 个答案:

答案 0 :(得分:2)

在jsp(这些<% %>)中使用scriptlet是非常不好的做法。它被ELJSTL取代。

但是,是的,服务器在将jsp页面发送给客户端之前先运行Java。 Java已经执行后,JavaScript将在客户端运行。最重要的是,您不能直接使用scriptlet访问javascript变量。但是,您可以反过来做,但是在这种情况下,它对您没有用。

您提到要在不重新加载页面的情况下将值从textarea传递到服务器。这就是AJAX的目的。

<script>
function doSth() {
var text = $("#textarea").val(); //value of textarea
//<%=text%> //error
sendToServer(text);
}

function sendToServer(text){

  var params = {
      textarea: text
  };
  $.post("YourServletUrl", $.param(params), function(response) {
      // ... handle response here if you have any..
  });     

}
</script>

然后在servlet的doPost方法中,该方法的URL映射为YourServletUrl,您只需执行以下操作:

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {

        String textarea= request.getParameter("textarea");

        System.out.println(textarea);

}