当前位置: 代码迷 >> 综合 >> 非ajax提交页面不跳转,java调用javascript详解
  详细解决方案

非ajax提交页面不跳转,java调用javascript详解

热度:31   发布时间:2024-01-19 12:10:56.0
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的父页面,并非本页;