我使用这段代码向我的JSP页面显示一个TextArea,在onclick事件之后有一个按钮调用两个函数。
<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是客户端,而是服务器端。但是我该如何解决这个问题呢?
发布于 2018-06-27 03:17:17
在你的jsp中使用scriptlet(这些东西是<% %>
)是非常糟糕的做法。它被EL和JSTL所取代。
但是,是的,服务器在您的jsp页面中运行java,然后才将其发送到客户端。并且在java已经被执行之后,javascript在客户机侧运行。最重要的是,你不能用scriptlet直接访问javascript变量。不过,您也可以反过来做,但在这种情况下,它对您没有用处。
您提到过,您希望在不重新加载页面的情况下将值从文本区域传递到服务器。这就是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方法中,您只需执行以下操作:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
String textarea= request.getParameter("textarea");
System.out.println(textarea);
}
https://stackoverflow.com/questions/51049747
复制相似问题