zoukankan      html  css  js  c++  java
  • Ajax工作流程

    Ajax通过XMLHttpRequest对象实现异步方式在后台发送发送请求。

    主要有以下四个步骤:

    (1)初始化XMLHttpRequest对象。不同浏览器的差异,需要我们创建一个跨浏览器的对象,并判断XMLHttpRequest对象创建是否成功,如果不成功,则给予提示。

    (2)为XMLHttpRequest对象指定一个回调函数,用于对后台返回结果进行处理。

    (3)创建一个与服务器的连接,在创建时,需要指定发送请求的方式(GET/POST),以及设置是否采用异步方式发送请求。

    (4)向服务器发送请求。

    以下是一个用Ajax判断用户名是否正确的样例:

    index.jsp文件:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript">
        function getAnswer(username) {
            if(username.value == ""){
                alert("请输入用户名");
                username.focus();
                return;
            }
            else{
                checkUsername("checkusername.jsp?username="+username.value);    //参数已整合到url地址中
            }
        }
        function checkUsername(url) {
            http_request = new XMLHttpRequest();      //初始化XMLHttpRequest对象
            http_request.onreadystatechange = function (){      //回调函数对后台返回结果进行处理
                if(http_request.readyState==4){
                    if(http_request.status == 200){
                        alert(http_request.responseText);
                    }
                    else{
                        alert("地址有误");
                    }
                }
            }
            http_request.open("POST",url,true);         //链接服务器
            http_request.send(null);                    //发送请求,这里不用带参数,前面参数已经整合进url中。
        }
    </script>
    </head>
    <body>
    <form action="" method="get" name="form1">
        用户名:
        <input type="text" name="username"><br>
        密码:
        <input type="password" name="passwd"><br>
        <input type="submit" value="提交" onclick="getAnswer(this.form.username)">
    </form>
    </body>
    </html>
    View Code

    checkusername.jsp(后台处理):

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
        String s = new String(request.getParameter("username").getBytes("ISO-8859-1"),"utf-8");
        if(s.equals("Tom")){
            out.print("此用户已注册");
        }
        else{
            out.print("恭喜你注册成功");
        }
    %>
    View Code

     另一种实现方法:(post方法,但传参数)

    index.jsp:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript">
        function getAnswer(username) {
            if(username.value == ""){
                alert("请输入用户名");
                username.focus();
                return;
            }
            else{
                checkUsername("checkusername.jsp",username);   
            }
        }
        function checkUsername(url,username) {
            http_request = new XMLHttpRequest();      //初始化XMLHttpRequest对象
            var param = "username="+username.value;
            //alert(username.value);
            http_request.onreadystatechange = function (){      //回调函数对后台返回结果进行处理
                if(http_request.readyState==4){
                    if(http_request.status == 200){
                        alert(http_request.responseText);
                    }
                    else{
                        alert("地址有误");
                    }
                }
            }
            http_request.open("POST",url,true);         //链接服务器
            http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");       //设置表头
            http_request.send(param);                    //发送请求,这里不用带参数,前面参数已经整合进url中。
        }
    </script>
    </head>
    <body>
    <form action="" method="get" name="form1">
        用户名:
        <input type="text" name="username"><br>
        密码:
        <input type="password" name="passwd"><br>
        <input type="submit" value="提交" onclick="getAnswer(this.form.username)">
    </form>
    </body>
    </html>

    疑问:

    1.两种方法有什么不同

    2.第二种方法为什么要设置表头,而且第二种写法为什么只能测试一次,第二次填个用户名测试就无反馈

  • 相关阅读:
    改善用户体验之alert提示效果
    用javascript制作放大镜放大图片
    window.history.go(1)返回上页的同时刷新"上页"技术
    JS折叠菜单
    懒得勤快的博客 resharper 等好文
    IBM DOMINO LOTUS LIMITS
    为CKEditor开发FLV视频播放插件
    Calling DLL routines from LotusScript. Part I: Windows API
    lotus domino下使用FCKeditor
    domino文件拆离数据库,放入指定目录
  • 原文地址:https://www.cnblogs.com/zjlyyq/p/6090304.html
Copyright © 2011-2022 走看看