我正在使用这段代码在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是服务器端。 但是我该如何解决呢?
答案 0 :(得分:2)
在jsp(这些<% %>
)中使用scriptlet是非常不好的做法。它被EL和JSTL取代。
但是,是的,服务器在将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);
}