黑马程序员技术交流社区

标题: 关于AJAX: [打印本页]

作者: 成吉思汗    时间: 2012-4-22 22:08
标题: 关于AJAX:
使用AJAX异步通信时,客户端总是接收不到服务器端返回的信息。这个怎么加速器呢?求解。
谢谢!
作者: 张卯    时间: 2012-4-22 22:34
高手啊,我们还在混基础,你都开始搞AJAX了~
作者: 李震 李震 李震    时间: 2012-4-23 03:45
你可以贴代码,不然的话这么一问我们也不知道情况的。
作者: liumeng    时间: 2012-4-23 14:18
贴出来 源码 不然谁知道啊
作者: 成吉思汗    时间: 2012-4-23 17:06
JavaScript代码:
// 浏览器对象
var xmlHttp = null;

/**
* 创建浏览器对象
*/
function getXmlHttpRequest() {
        try {
                // Internet Explorer
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
                try {
                        // 微软的IE浏览器
                        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {
                        try {
                                // Firefox,Poera 8.0+,Safari
                                xmlHttp = new XMLHttpRequest();
                        } catch (e) {
                                alert("您的浏览器不支持AJAX");
                                return false;
                        }
                }
        }
}

function checkUserExists() {
        // 获取浏览器对象
        getXmlHttpRequest();

        var userName = document.getElementById("name");
        if (userName.value == "") {
                // document.getElementById("nameInfo").innerHTML = "用户名不能为空!";
                alert("用户名不能为空");
                return false;
        }

        // 设置连接地址
        var url = "MessageServlet.RegisterServlet?userName=" + userName.value
                        + "&type=checkName";

        if (xmlHttp != null) {

                // 设置回调函数
                xmlHttp.onreadystatechange = stateChanged;

                // 打开与服务器响应的地址连接
                xmlHttp.open("get", url);

                // 发送请求
                xmlHttp.send(null);

        }
        return true;
}

function stateChanged() {
        if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                        document.getElementById("nameInfo").innerHTML = xmlHttp.responseText;
                        // alert(xmlHttp.responseText);

                }
        }
}

/**
* 通用函数
*
* @param {Object}
*            element ID名称
* @return {TypeName} 对象
*/
function $(element) {
        return document.getElementById(element);
}

/**
* 验证用户名是否为空
*
* @return {TypeName}
*/
function checkName() {
        var name = $("name");
        var nameInfo = $("nameInfo");
        if (name.value == "")
                return false;
}

/**
* 当密码文本框获取光标时
*/
function pwdOnfocus() {
        var pwdInfo = $("pwdInfo");
        pwdInfo.innerHTML = "密码由大小写英文字母/数字组成,<br />长度为6-20位";
}

/**
* 当密码文本框失去光标时
*
* @return {TypeName}
*/
function checkPwd() {
        var pwd = $("pwd");
        var pwdInfo = $("pwdInfo");
        var reg = /^([a-zA-Z0-9]){6}$/;
        if (pwd.value == "") {
                pwdInfo.innerHTML = "密码不能为空!";
        } else {
                pwdInfo.innerHTML = reg.test(pwd.value) ? "密码格式输入正确" : "密码格式输入错误";
        }
        return reg.test(pwd.value) ? true : false;
}

/**
* 验证重复密码是否为空和与密码是否一致
*/
function checkRepwd() {
        var pwd = $("pwd");
        var rePwd = $("repwd");
        var rePwdInfo = $("rePwdInfo");
        if (rePwd.value == "") {
                rePwdInfo.innerHTML = "确认密码不能为空";
        } else {
                rePwdInfo.innerHTML = pwd.value == rePwd.value ? "确认密码通过"
                                : "两次密码输入不一致,<br />请重新输入";
        }
        return pwd.value == rePwd.value ? true : false;
}

/**
* 当Email文本框获取光标时
*/
function emailOnfocus() {
        var emailInfo = $("emailInfo");
        emailInfo.innerHTML = "XXX@XXX.XXX";
}

/**
* 当Email文本框失去光标时
*
* @return {TypeName}
*/
function checkEmail() {
        var email = $("email");
        var emailInfo = $("emailInfo");
        var reg = /^\w+@\w+(\.[a-zA-Z]{2,3}){1,2}$/;
        if (email.value == "") {
                emailInfo.innerHTML = "email地址不能为空";
        } else {

                emailInfo.innerHTML = reg.test(email.value) ? "email输入正确!"
                                : "email格式输入错误!";
        }
        return reg.test(email.value) ? true : false;
}

/**
* 验证全部信息
*/
function checkAll() {
        var nameInfo = $("nameInfo");
        if (nameInfo.innerHTML == "该用户已存在!") {
                alert("该用户已注册");
                return false;
        }
        var flag = checkUserExists() && checkPwd() && checkRepwd() && checkEmail() ? true
                        : false;

        return flag;
}

/**
*
*/
function register() {
        getXmlHttpRequest();
        var name = document.getElementById("name");
        var pwd = document.getElementById("pwd");
        var email = document.getElementById("email");

        // 设置回调函数
        xmlHttp.onreadystatechange = aaa;
        xmlHttp.open("get", "register.RegisterServlet?type=register&name="
                        + name.value + "&pwd=" + pwd.value + "&email=" + email.value, true);

        xmlHttp.send(null);
}

function aaa() {

        if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                        alert(xmlHttp.responseText);// 就这一步出不来
                }
        }
}

function resetInfo() {
        $("nameInfo").innerHTML = "";
        $("pwdInfo").innerHTML = "";
        $("rePwdInfo").innerHTML = "";
        $("emailInfo").innerHTML = "";
}

作者: 成吉思汗    时间: 2012-4-23 17:07
JSP代码:
<%@ page language="java" import="java.util.*"
        contentType="text/html; charset=gbk" pageEncoding="gbk"%>
<%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                        + request.getServerName() + ":" + request.getServerPort()
                        + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
        <head>
                <base href="<%=basePath%>">

                <title>注册页面</title>

                <meta http-equiv="pragma" content="no-cache">
                <meta http-equiv="cache-control" content="no-cache">
                <meta http-equiv="expires" content="0">
                <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
                <meta http-equiv="description" content="This is my page">

                <link rel="stylesheet" type="text/css" href="CSS/register.css">

                <script type="text/javascript" src="js/register.js">
</script>
                <!--
                <script type="text/javascript" src="js/ajax.js">
</script>
        -->
        </head>

        <body>
                <div id="register">
                        <div id="title"></div>
                        <div id="body">
                                <form id="myFormRegister" name="myFormRegister" method="post"
                                        action="javascript:register()" onsubmit="return checkAll()">

                                        <table>
                                                <tr>
                                                        <td>
                                                                <label for="name">
                                                                        &nbsp;&nbsp;用户名:&nbsp;
                                                                </label>
                                                        </td>
                                                        <td>
                                                                <input type="text" id="name" name="name" class="texts"
                                                                        onblur="checkUserExists()" />
                                                        </td>
                                                        <td>
                                                                <span id="nameInfo"></span>
                                                        </td>
                                                </tr>

                                                <tr>
                                                        <td>
                                                                <label for="pwd">
                                                                        &nbsp;&nbsp;密&nbsp;&nbsp;码:&nbsp;
                                                                </label>
                                                        </td>
                                                        <td>
                                                                <input type="password" id="pwd" name="pwd" class="texts"
                                                                        onfocus="pwdOnfocus()" onblur="checkPwd()" />
                                                        </td>
                                                        <td>
                                                                <span id="pwdInfo"></span>
                                                        </td>
                                                </tr>

                                                <tr>
                                                        <td>
                                                                <label for="rePwd">
                                                                        确认密码:&nbsp;
                                                                </label>
                                                        </td>
                                                        <td>
                                                                <input type="password" id="rePwd" name="rePwd" class="texts"
                                                                        onblur="checkRepwd()" />
                                                        </td>
                                                        <td>
                                                                <span id="rePwdInfo"></span>
                                                        </td>
                                                </tr>

                                                <tr>
                                                        <td>
                                                                <label for="email">
                                                                        &nbsp;&nbsp;邮&nbsp;&nbsp;箱:&nbsp;
                                                                </label>
                                                        </td>
                                                        <td>
                                                                <input type="text" id="email" name="email" class="texts"
                                                                        onfocus="emailOnfocus()" onblur="checkEmail()" />
                                                        </td>
                                                        <td>
                                                                <span id="emailInfo"></span>
                                                        </td>
                                                </tr>

                                        </table>
                                        <p>
                                                <input type="submit" id="reg" name="reg" value="" />
                                                &nbsp;&nbsp;
                                                <input type="reset" id="reset" name="reset" value=""
                                                        onclick="resetInfo()" />
                                        </p>
                                        <p>
                                                <a href="index.jsp"><img src="images/sms_btn_goback.png" /> </a>
                                        </p>
                                </form>
                        </div>
                </div>
        </body>
</html>
Servlet代码:
package com.control;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.biz.UserDaoImpl;
import com.model.entity.User;

@SuppressWarnings("serial")
public class RegisterServlet extends HttpServlet {

        /**
         * Constructor of the object.
         */
        public RegisterServlet() {
                super();
        }

        /**
         * Destruction of the servlet. <br>
         */
        public void destroy() {
                super.destroy(); // Just puts "destroy" string in log
                // Put your code here
        }

        /**
         * The doGet method of the servlet. <br>
         *
         * This method is called when a form has its tag value method equals to get.
         *
         * @param request
         *            the request send by the client to the server
         * @param response
         *            the response send by the server to the client
         * @throws ServletException
         *             if an error occurred
         * @throws IOException
         *             if an error occurred
         */
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {

                doPost(request, response);
        }

        /**
         * The doPost method of the servlet. <br>
         *
         * This method is called when a form has its tag value method equals to
         * post.
         *
         * @param request
         *            the request send by the client to the server
         * @param response
         *            the response send by the server to the client
         * @throws ServletException
         *             if an error occurred
         * @throws IOException
         *             if an error occurred
         */
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {

                // 设置输入文本为中文
                request.setCharacterEncoding("gbk");
                // 设置输出文本为中文
                response.setCharacterEncoding("gbk");
                response.setContentType("text/html; charset=gbk");

                PrintWriter out = response.getWriter();

                String type = request.getParameter("type");

                System.out.println(type);

                // 实例化用户对象
                User user = new User();

                if (type.equals("checkName")) {

                        // 获取用户名
                        String name = request.getParameter("userName");

                        user.setUserName(name);
                        int result = new UserDaoImpl().getUserCount(user);
                        System.out.println("this is line 93:>>>>");
                        if (result == 0) {
                                out.print("用户名合法!");
                        } else {
                                out.print("该用户已存在!");
                        }

                } else if ("register".equals(type)) {
                        String name = request.getParameter("name");
                        String pwd = request.getParameter("pwd");
                        String email = request.getParameter("email");

                        user.setUserName(name);
                        user.setPassword(pwd);
                        user.setEmail(email);

                        int result = new UserDaoImpl().addUser(user);

                        if (result == 1) {
                                out.print("恭喜你!注册成功!");// 就这句话无法获取

                                request.getRequestDispatcher("index.jsp").forward(request,
                                                response);

                        } else {
                                out.print("很抱歉,注册失败!");
                        }
                }

        }

        /**
         * Initialization of the servlet. <br>
         *
         * @throws ServletException
         *             if an error occurs
         */
        public void init() throws ServletException {
                // Put your code here
        }

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2