<%
String success= (String) request.getAttribute("success");
if (success.equals("codeExist")) {
%>
<script type="text/javascript">
alert("该用户不存在!");
</script>
<%
} else {
success= "";
}
%><%
String success=(String)request.getAttribute("success");
if (success != null && success.equals("codeExist")) {
out.write("<script> alert('该用户不存在!'); </script>");
}
%>
第一个的效果是,弹出信息后,登陆界面的所有控件包括图片都不见了,只有那个“该用户不存在”弹出式信息,点确定后,消息框消失后,界面又出现了,而第二种就不会出现这种情况,界面在,同时也弹出消息,这是为什么?都是js代码啊,效果差距怎么就这么大呢
也就是说你在显示页面之前就调了JS了
要是在页面加一个的body 内部加一个触发时间自然就能出现页面了。
代码生成都在head之间比较好。
第一断代码,js优先html代码执行.没等html整个页面解析加载完,就已经触发执行了.第二段代码,js是在直接输出页面,也就是和html成为一个整体,所以先显示出页面,才执行了js代码.
<script language="JavaScript" type="text/javascript">
$(document).ready(function(){
<c:if test="${success eq 'codeExist'}">
alert("该用户不存在!");
</c:if>
});
</script>
当文档准备就绪,开始执行function中的方法。<c:if>是EL表达式,在服务器端做判断,成立则输出 alert("该用户不存在!"),否则function方法体中没有内容。
第二段代码你可以看做是一个整体。就是java。是以一个整体的方式执行代码。
scritplet > html > js
楼主只要反编译两个jsp生成的class文件就能看出原因了。
alert();本身就是弹出一个消息框,属于script