只使用了ajax和servlet。使用alert就能成功转到回调函数,没有用alert就会失败

花生喂龙 2016-07-15 10:12:44
首页,home.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>首页</title>
</head>

<body bgcolor="#f0f0f0">
<div id="box">
<%@ include file="top.jsp" %>
<%@ include file="login.jsp" %>
</div>
</body>
</html>

导航栏,top.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>My JSP 'top.jsp' starting page</title>
<link rel="stylesheet" href="css/top.css" type="text/css"></link>
</head>

<body>
<div id="notClickDiv"></div>
<div id="top"></div>
<div id="navigation">
<div style="float:left;color:#006700;">
<c:if test="${!empty sessionScope.userName}">
<b>   》  欢迎 ${sessionScope.userName}!</b>
</c:if>
<c:if test="${empty sessionScope.userName}">
<b>   》  欢迎!</b>
</c:if>
</div>
<div style="float:right;text-align: center;">
<a href="">首页</a>
<c:if test="${empty sessionScope.userName}">
  |  <a href="javascript:Myopen('login')">登录</a>
  |  <a href="#" onClick="Regopen('register')">注册</a>
  |  <a href="forgetPassword.jsp">找回密码</a>
 
</c:if>
<c:if test="${!empty sessionScope.userName}">
  |  <a href="UserServlet?action=exit">退出登录</a>
</c:if>
</div>
</div>
</body>
</html>

登录,login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="servlet.UserServlet"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>DiaryWeb</title>

<link rel="stylesheet" href="css/login.css" type="text/css"></link>
<script type="text/javascript" src="js/AjaxRequest.js"></script>
</head>

<body >
<div id="login">
<form name="form" id="form" method="post" action="">
<div id="loginTitle">日记网——用户登录</div>
<div id="loginCentent">
<table>
<tr>
<th>用户名:<input name="username" type="text"></th>
<th><a href=".jsp">注册用户</a></th>
</tr>
<tr>
<th>密 码:<input name="password" type="password"></th>
<th><a href=".jsp">忘记密码</a></th>
<tr>
</table>
<input name="submit" class="button" type="button" onclick="loginSubmit(this.form)" value="登录">
<input name="close" class="button" type="button" value="关闭" onClick="myClose(login)">
</div>
</form>
</div>
<script type="text/javascript">
function myClose(divID){
divID.style.display='none';
document.getElementById("notClickDiv").style.display='none';
}
function Myopen(divID){
var isRn=true;

var notClickDiv=document.getElementById("notClickDiv");
notClickDiv.style.display='block';

document.getElementById(divID).style.display='block';

var bWidth=document.documentElement.clientWidth;
var bHeight=document.documentElement.clientHeight;
var lWidth=document.getElementById(divID).offsetWidth;
var lHeight=document.getElementById(divID).offsetHeight;

if(isRn){
document.getElementById(divID).style.pixelLeft=(bWidth-lWidth)/2;
document.getElementById(divID).style.pixelTop=(bHeight-lHeight)/2;
}
}
function loginSubmit(form){
if(form.username.value==""){
alert("请输入用户名");
form.username.focus();
return false;
}
if(form.password.value==""){
alert("请输入密码!");
form.password.focus();
return false;
}
var param="username="+form.username.value+"&password="+form.password.value;
var loader=new net.AjaxRequest("UserServlet?action=login",deal_login,onerror,"POST",encodeURI(param));


}
function deal_login(){
var h=this.req.responseText;
h=h.replace(/\s/g,"");
alert(h);

if(h=="登陆成功!"){
alert("成功");
}else{
form.username.value="";
form.pwd.value="";
form.username.focus();
}
}
function onerror(){
alert("注意:您的操作有误");
}
</script>
</body>
</html>


传值页面,userMessage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
${requestScope.returnValue}

ajax代码
var net=new Object();	
net.AjaxRequest=function(url,onload,onerror,method,params){
this.req=null;
this.onload=onload;
this.onerror=(onerror) ? onerror : this.defaultError;
this.loadDate(url,method,params);
}

net.AjaxRequest.prototype.loadDate=function(url,method,params){
if (!method){
method="GET";
}

if (window.XMLHttpRequest){
this.req=new XMLHttpRequest();
} else if (window.ActiveXObject){
this.req=new ActiveXObject("Microsoft.XMLHTTP");
}

if (this.req){
try{
var loader=this;
this.req.onreadystatechange=function(){
net.AjaxRequest.onReadyState.call(loader);
}
this.req.open(method,url,true);

if(method=="POST"){
this.req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
this.req.setRequestHeader("x-requested-with", "ajax");
}
this.req.send(params);
}catch (err){
System.out.println("如果提交方式为POST");
this.onerror.call(this);
}
}
}

net.AjaxRequest.onReadyState=function(){
var req=this.req;
var ready=req.readyState;
if (ready==4){
if (req.status==200 ){
this.onload.call(this);
}else{
System.out.println("重构回调函数");
this.onerror.call(this);
}
}
}

net.AjaxRequest.prototype.defaultError=function(){
alert("错误数据\n\n回调状态:" + this.req.readyState + "\n状态: " + this.req.status);
}

servlet代码
package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import DAO.UserDAO;
import model.User;

public class UserServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
private UserDAO userDAO = null;

public UserServlet() {
super();
userDAO = new UserDAO();
}

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
this.doPost(request,response);
}

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
System.out.println("action="+request.getParameter("action"));
if ("login".equals(action)) {
this.login(request, response);
}else if ("forgetPassword".equals(action)) {
this.forgetPassword(request, response);
}
}
private void login(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
User f = new User();
f.setUsername(request.getParameter("username"));
f.setPassword(request.getParameter("password"));
System.out.println("SERVLETusername="+request.getParameter("username"));
System.out.println("f="+f);
int r = userDAO.login(f);
System.out.println("r="+r);
if(r>0){
HttpSession session = request.getSession();
session.setAttribute("username",f.getUsername());
session.setAttribute("uid",r);
request.setAttribute("returnValue","登陆成功!");
System.out.println("登陆成功!");
request.getRequestDispatcher("userMessage.jsp").forward(request,response);
}else{
request.setAttribute("returnValue","输入的用户名或密码错误");
request.getRequestDispatcher("userMessage.jsp").forward(request,response);;
}
}
...全文
141 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
今天晴 2016-07-15
  • 打赏
  • 举报
回复
引用 5 楼 qq_24435837 的回复:
[quote=引用 3 楼 TTWiFi 的回复:] 同步异步跟jquery是什么关系,楼主加油。
—————————————————— 楼上是正解,主要是知道了是同步异步的原因,但网上找到的解决方法都是应用了jQuery的时候的解决方案。。。[/quote]我意思是同步跟异步是Ajax里的语法,不是jquery的~~你还没搞清楚这两个东西
花生喂龙 2016-07-15
  • 打赏
  • 举报
回复
引用 3 楼 TTWiFi 的回复:
同步异步跟jquery是什么关系,楼主加油。
—————————————————— 楼上是正解,主要是知道了是同步异步的原因,但网上找到的解决方法都是应用了jQuery的时候的解决方案。。。
花生喂龙 2016-07-15
  • 打赏
  • 举报
回复
引用 2 楼 beijing20110905 的回复:
.open()中的true改为false。 你可以看下同步和异步的区别。 http://blog.csdn.net/fly_buf/article/details/6535259 http://www.cnblogs.com/xmphoenix/archive/2011/11/21/2257651.html
———————————————————————————— 多谢,多谢
今天晴 2016-07-15
  • 打赏
  • 举报
回复
同步异步跟jquery是什么关系,楼主加油。
  • 打赏
  • 举报
回复
.open()中的true改为false。 你可以看下同步和异步的区别。 http://blog.csdn.net/fly_buf/article/details/6535259 http://www.cnblogs.com/xmphoenix/archive/2011/11/21/2257651.html
花生喂龙 2016-07-15
  • 打赏
  • 举报
回复
1,网上查了很多资料都是说要改成同步,但是我没有用jQuery啊,所以要怎么改成同步呢 2,采用了延时之后也是失败了 function loginSubmit(form){ var loader=new net.AjaxRequest("UserServlet?action=login",deal_login,onerror,"POST",encodeURI(param)); setTimeOut(function loginSubmit(){},2000); } 换一种写法,成功了一次就失败了 setTimeout(function loginSubmit(form){ var loader=new net.AjaxRequest("UserServlet?action=login",deal_login,onerror,"POST",encodeURI(param)); },1000); 用了jQuery的话是这样,$.ajaxSettings.async = false,但我没用啊,这个加到哪里呢 3,之前发过的帖子。。。没有有效答案啊。ajax使用alert就能成功,没有使用alert就会失败-CSDN论坛-CSDN.NET-中国最大的IT技术社区 http://bbs.csdn.net/topics/391984041

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧