非ajax提交页面不跳转,java调用javascript详解
java 调用javascript的函数,
想必很多人都知道,java调用c++,c++调用java,同样也有java调用javascript,或者是javascript调用java(dwr)
其实java调用javascript很简单,最重要的是你要懂得其中的原理才好,浏览器和服务端的交互无非就是,response和request之间的这两个各对象传值操作,
browse --(request)--> 服务器端 向服务器发送请求,
服务器 --(response)--> browse 服务器将处理完成的数据交给浏览器来显示,
1.页面不刷新,不跳转
一个A.jsp页面请求服务端的servlet,发送post请求,当处理完成请求以后一般页面会跳转向另外一个B.jsp页面;但是当我们在A.jsp中添加一个隐藏的iframe的时候,并且将from表单的target属性修改为:iframe 的id的时候,我们的页面就不会再跳转了,其实不是不跳转,是转向了那个隐藏的iframe,此时用户就不会感到页面有刷新的操作,用户的体验就会提高;
A.jsp:
<html>
<head>
<script>
</script>
</head>
<body>
<from action = "sava.jsp/save.action" target="hidden_frame">
</from>
<iframe name='hidden_frame' id="hidden_frame" style="display:none"></iframe>
</body>
</html>
2.页面提交成功以后在本页面提示成功信息,
在服务器端,处理完成请求以后,获取response,用response将要调用的javascript的方法,输出到前台页面,前台页面就可以自动调用javascript的方法,
如果有中文,防止中文乱码:
response.setContentType("text/html;charset=UTF-8");
前台显示提示:
response.getWriter().print("<script>alert('操作成功!');</script>");
调用前台的方法:
response.getWriter().print("<script>test();</script>"); 注:test方法必须在提交的页面中
如果提交的页面是iframe进来的,则将javascript放到父页面去,然后通过:
response.getWriter().print("<script>parent.window.test();</script>");注:test方法在此iframe的父页面,并非本页;
摘自:古影轩
补充:web前端 , JavaScript ,