AJAX初步

1.什么是AJAX

  客户端与服务器,可以在【不必刷新整个浏览器】的情况下,与服务器进行异步通讯的技术,即,AJAX是一个【局部刷新】的【异步】通讯技术;

  AJAX不是全新的语言,是2005年Google公司推出的一种全新【编程模式】,不是新的编程语言。

2.AJAX开发步骤

步一:创建AJAX异步对象,例如:createAJAX()

步二:准备发送异步请求,例如:ajax.open(method,url)

步三:如果是POST请求的话,一定要设置AJAX请求头,例如:ajax.setRequestHeader(),如果是GET请求的话,无需设置设置AJAX请求头

步四:真正发送请求体中的数据到服务器,例如:ajax.send()

步五:AJAX不断的监听服务端响应的状态变化,例如:ajax.onreadystatechange,后面写一个无名处理函数

步六:在无名处理函数中,获取AJAX的数据后,按照DOM规则,用JS语言来操作Web页面

3.XMLHttpRequest(AJAX)对象常用事件,方法和属性

事件:

ajax.onreadystatechange:表示AJAX异步对象不断监听服务端的响应,是由服务器程序触发,不是程序员触发

属性:

  ajax.readyState==0:表示AJAX异步对象已创建好,但还没有调用open()方法

  ajax.readyState==1:表示AJAX异步对象已调用open()方法,但还没有调用send()方法

ajax.readyState==2:表示AJAX异步对象已调用send()方法,但请求还没有到达服务器端

    ajax.readyState==3:表示服务端已接收到AJAX异步对象的请求,正在处理响应中。。。

ajax.readyState==【4】:表示AJAX异步对象已经完完全全接收到了服务器的响应信息,但接收到的数据不一定都正确

  上述5种状态不是所有浏览器都相同,但状态4每种浏览器都相同

ajax.status==200:表示AJAX异步对象接收到响应码,如果是200的话,表示一切正常

ajax.responseText:表示从AJAX异步对象中获取HTML载体中的数据

  ajax.responseXML:表示从AJAX异步对象中获取XML载体中的数据

方法:

ajax.open(method,url,可选的boolean值)

    AJAX异步对象准备发送异步请求

  参数一:以什么方式发送,常用的用GET或POST,大小写不敏感

  参数二:发送到什么地方去,常用Servlet或Struts2或SpringMVC来接收,

  参数三:默认值为true,表示AJAX对象以【异步】的方式提交到服务端

如果设置为false,表示AJAX对象以【同步】的方式提交到服务端

ajax.setRequestHeader("content-type","application/x-www-form-urlencoded")

表示将请求体中的内容,按照UTF-8的方式进行编码,只针对POST请求有效

ajax.send(content)

AJAX异步对象真正发送异步请求

参数一:表示HTTP【请求体】中的内容

如果是GET方式:content = null,如果强行传值到服务器,服务端收不到,返回NULL

如果是POST方式:content != null,例如:username=jack&password=123&role=admin

4.AJAX适合用在什么地方

AJAX【适合】不用来传递大量数据,而只用来【传递少量数据】,在用户的【体验】上,【更加人性化】。

AJAX是一个和服务器无关的技术,即服务器可使用:JavaEE,.NET,PHP……这些技术都可。

AJAX只管向服务器发送请求,同时只管接收服务器的HTML或XML或JSON载体响应。

服务端不能使用转发或重定向到web页面,因为这样会起浏览器全面刷新,即只能以流的方式响应给浏览器。

5.验证用户名是否存在

function createAJAX(){
    var ajax=null;
    try{
        ajax = new ActiveXObject("microsoft.xmlhttp");
    }
    catch (e){
        ajax = new XMLHttpRequest();
    }
    return ajax;
}
function checkEmpUsePost(emp){
    var empName = emp.value;
    var ajax = createAJAX();
    var method = "POST";
    var url = "${pageContext.request.contextPath}/emp_checkEmp?time="+new Date().getTime();
    ajax.open(method,url);
    ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");
    var content = "empName="+empName;

    ajax.send(content);
    ajax.onreadystatechange = function(){
        if(ajax.readyState == 4)
        {
            if(ajax.status == 200)
            {
                var str = ajax.responseText;
                var span = document.getElementById("resID");
                var img = document.createElement("img");
            //    设置src属性值
                img.src = str;
                img.style.width="12px";
                img.style.height="12px";
                //清空span标签的内容
                span.innerHTML="";
                span.appendChild(img);
            }
        }
    }
}

Action中的方法:(Action中要有相应属性的参数set和get方法)

    public String checkEmp() throws IOException {
        Object empName = request.get("empName");
        List<Employee> emps = employeeService.getAll((String) empName);
        HttpServletResponse response = ServletActionContext.getResponse();
        PrintWriter writer = response.getWriter();
        if(emps != null && emps.size()>0)
        {
            writer.write("images/MsgSent.gif");
        }
        else {
            writer.write("images/MsgError.gif");
        }
        writer.flush();
        writer.close();
        return "checkEmp";
    }

6.二级联动下拉框

function getCity(proEle){
    var index = proEle.selectedIndex;
    var province = proEle[index].innerHTML;
    if("选择省份" != province)
    {
        var ajax = createAJAX();
        var method = "POST";
        var url = "${pageContext.request.contextPath}/ajax_getCity?time="+new Date().getTime();
        //var content = "province="+province;
        ajax.open(method,url);
        ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");
        //ajax.send(content);
        //var method = "POST";
        //var url = "${pageContext.request.contextPath}/getCity?time="+new Date().getTime();
        //ajax.open(method,url);
        //ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");
        var content = "province="+province;

        ajax.send(content);
        ajax.onreadystatechange = function(){
            if(ajax.readyState == 4){
                if(ajax.status == 200)
                {
                    //从ajax异步对象获取服务器响应的xml文档
                    var xmlDocument = ajax.responseXML;
                //    解析xml文档
                    var citySel = document.getElementById("cityID");
                    var cityEleArray = xmlDocument.getElementsByTagName("city");
                    citySel.options.length=1;
                    for(var i=0;i<cityEleArray.length;i++){
                        //获取xml节点的内容
                        var city = cityEleArray[i].firstChild.nodeValue;
                        var cityEle = document.createElement("option");
                        cityEle.innerHTML = city;
                        citySel.appendChild(cityEle);
                    }
                }
            }
        }
    }
}

Action中的方法:

    public String getCity() throws IOException {
        Object province = request.get("province");
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setContentType("text/xml;charset=UTF-8");
        PrintWriter writer = response.getWriter();
        writer.write("<?xml version=‘1.0‘ encoding=‘UTF-8‘?>");
        writer.write("<root>");
        if("广东".equals(province))
        {
            writer.write("<city>广州</city>");
            writer.write("<city>深圳</city>");
        }
        else if("山东".equals(province))
        {
            writer.write("<city>济南</city>");
            writer.write("<city>枣庄</city>");
            writer.write("<city>青岛</city>");
        }
        writer.write("</root>");
        writer.flush();
        writer.close();
        return "getCity";
    }
时间: 2024-10-12 04:24:31

AJAX初步的相关文章

ajax初步(1)

搭建服务器环境,创建一个文件夹,本篇搭建为wamp环境,在www目录下,创建ajax文件夹. ajax概念: AJAX 指异步JavaScript及XML(Asynchronous JavaScript And XML(异步JavaScript和XML)),是指一种创建交互式网页应用的网页开发技术. 使用Javascript向服务器提出请求并处理响应而不阻塞用户!核心对象XMLHTTPRequest.通过这个对象,您的 JavaScript 可在不重载页面的情况与Web服务器交换数据,即在不需要

AJAX初步理解

一.什么是AJAX Ajax是Asynchronous JavaScript and XML的缩写,这一技术能够向服务器请求额外的数据而无需卸载整个页面,会带来良好的用户体验.传统的HTTP请求流程大概是这样的,浏览器向服务器发送请求-〉服务器根据浏览器传来数据生成response-〉服务器把response返回给浏览器-〉浏览器刷新整个页面显示最新数据,这个过程是同步的,顺序执行. AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求)从服务器获取数据,这里的异步是指脱离当

Ajax 初步学习

一.简介 AJAX(Asynchronous JavaScript And XML),指异步JavaScript及XML,它不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术,其本质就是JavaScript技术,与XML其实没有太大关系. 通过AJAX,可使用JavaScript的XMLHttpRequest对象来直接与服务器进行通信.通过这个对象,JavaScript可在不重载页面的情况与 Web 服务器交换数据. AJAX在浏览器与Web服务器之间使用异步数据

AJAX——AJAX初步

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 创建 XMLHttpRequest 对象

asp.net + jQuery.Ajax初步实践

最近在做一个网站项目时,有异步请求的需求,经过一番查找资料,终于实现了这个部分,在此记录一下,以备日后回顾. 1.jQuery的ajax函数可以很方便的建立发起异步请求 $(".drop-a").click(function () { var content = $(this).next("div"); if (isGet == false) { var code = $("#code").html(); var data = { code: c

ajax 初步了解

ajax对象的成员 属性: responseText 以字符串形式接收服务器端返回的信息 readyState 表示ajax状态值 onreadystatechange 事件,该事件可以感知ajax状态(readyState)的变化 ajax请求过程中要随时感知其状态 方法: open()创建一个新的http请求 send()发送请求到服务器 ajax有5种状态readyState: 0------> 创建ajax对象完毕 1------> 有调用open()方法 2------> 有调

django之choice、ajax初步

django之choice参数,ajax choice参数 应用场景:主要是用户性别.用户工作状态.成绩对应 ##在测试文件中运行,需要写以下几个模块 if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day62.settings") import django django.setup() choices = ( (1, 'male'), (2

.atitit.web 推送实现解决方案集合(3)----dwr3 Reverse Ajax

.atitit.web 推送实现解决方案集合(3)----dwr3 Reverse Ajax 1. 原理实现 1 2. Page  增加配置,增加回调函数dwr.engine.setActiveReverseAjax(true); 1 3. Web.xml增加配置 1 4. Java代码(page法,简单) 2 5. 推荐实现方式 attribute法.. 2 6. 参考::: 2 1. 原理实现 ScriptSession ::简单的一个page url管理一个scriptsession,这个

ASP.NET 使用Ajax

之前在Ajax初步理解中介绍了对Ajax的初步理解,本文将介绍在ASP.NET中如何方便使用Ajax,第一种当然是使用jQuery的ajax,功能强大而且操作简单方便,第二种是使用.NET封装好的ScriptManager. $.ajax向普通页面发送get请求 这是最简单的一种方式了,先简单了解jQuery ajax的语法,最常用的调用方式是这样:$.ajax({settings}); 有几个常用的setting,全部参数及其解释可以去jQuery官方API文档查询 1. type:请求方式