美文网首页
玩转AJAX

玩转AJAX

作者: codingXiaxw | 来源:发表于2018-05-14 16:18 被阅读21次

title: 玩转AJAX
tags: AJAX 异步请求
categories: AJAX 异步请求


客户端向服务器发送请求,若服务器每次响应过来的结果都要重新加载整个界面的话这样会给服务器带来很大的压力。所以ajax出现了,它是在不重新加载整个页面的情况下与服务器交换数据并更新部分网页的技术,是一种使用现有标准的新方法。

AJAX是什么

1.asynchronous javascript and xml,翻译过来就是异步的js和xml。2.它能使用js语言访问服务器,而且是异步访问。3.服务器给客户端的响应一般是整个页面,一个html完整页面但在ajax中因为是局部刷新,那么服务器就不用再响应整个页面而只是响应局部。

服务器向客户端返回的数据类型

一般客户端向服务器发送请求,服务器返回的数据类型有三种:

  • 1.text类型:返回的数据是纯文本。
  • 2.xml类型:返回的数据是xml格式,它是提供js和java交互的数据格式
  • 3.json类型:它也是提供js和java交互的数据格式,在ajax中最受欢迎。

理解同步交互和异步交互

  • 同步交互:
    • 1.发一个请求,就要等待服务器的响应结束,然后才能发送第二个请求。
    • 2刷新的是整个页面。
  • 异步交互:
    • 1.发一个请求,无需等待服务器的响应,然后就可以发第二个请求。
    • 2.可以使用js来接受服务器的响应,然后使用js来局部刷新界面。

附上uml图解释这两者的区别:


image

ajax常见应用情景

  • 1.搜索引擎:在搜索引擎中输入关键字,会出现一个下拉框,列出网络上与关键字相关的字眼。
  • 2.注册:注册页面上填写完用户名后移开光标,会显示该用户名是否已被注册。
  • 3.淘宝某个店铺下方的评论框:翻页时的异步操作。

ajax的优缺点

  • 优点:
    • 异步交互,增强了用户的体验。
    • 性能:因为服务器无需再响应整个页面,只需要响应部分内容,所以服务器的压力减轻了。
  • 缺点:
    • ajax不能应用在所有场景
    • ajax无端的增多了对服务器的访问次数,给服务器带来了压力(比较上述优点,在减少了服务器压力的同时又给服务器带来了压力,不知你理不理解哈哈)

如何使用ajax来发送异步请求

第一步(首先要得到XMLHttpRequest)

大多数浏览器都只是得到该对象的方法为:var xmlHttp=new XMLHttpRequest();

IE6.0得到的方法为:var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

IE5.0以及更早版本的IE:var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");

<script>中编写创建XMLHttpRequest对象的函数:

    function createXMLHttpRequest(){
            try{
                return new XMLHttpRequest();
            }catch(e){
                try{
                    return new ActiveXObject(“Msxml2.XMLHTTP”);
                }catch(e){
                    try{
                        return new ActiveXObject(“Microsoft.XMLHTTP”);
                    }catch(e){
                        alert(“哥们,你用的是什么浏览器啊”);
                        throw e;
                    }
                }
            }
        }

第二步(打开与服务器的连接)

xmlHttp.open("","",boolean):用来打开与服务器的连接,它需要三个参数。1.请求参数,可以是get可以是post。2.请求的url:指定服务器端资源。3.请求是否异步,如果为true表示发送异步请求,否则发送同步请求。例如xmlHttp.open("GET","项目名称/AServlet",true);

第三步(发送请求)

xmlHttp.send(参数):参数为请求体内容。如果请求方式是get,则参数为null(不可以省略null),因为get请求方式的请求体为空;如果请求方式为post,则参数为请求体,另外还需要在此方法前面增加一个mlHttp.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded”);设置请求头的方法。

第四步

给xmlHttp对象注册onreadystatechange监听器,这个方法用于接收从服务器发送过来的响应数据。 在该方法中需要做以下步骤:

1.获取xmlHttp对象的状态,xmlHttp对象一共有5个状态:

  • 0状态:表示xmlHttp对象刚创建,还没有调用open()方法。
  • 1状态:请求开始,调用了open方法,但还没有调用send方法
  • 2状态:调用完了send方法
  • 3状态:服务器已经开始响应,但不表示响应结束了。
  • 4状态:服务器响应结束(通常我们只关心这个状态)

该状态通过调用xmlHttp.readyState得到。

2.得到服务器响应的状态码:通过调用xmlHttp.status得到,例如200,404,500。

3.得到服务器响应的内容,由于服务器返回的类型不同,所以得到的内容类型也不同,以下3种类型采用3种方法得到:

  • var content=xmlHttp.responseText;//服务器返回的文本为text。
  • var content=xmlHttp.responseXML;//服务器响应的文本为xml内容。xmlHttp会自动对xml文本进行解析,得到的content为document对象。
  • var content=eval("("+xmlHttp.responsetext+")");//服务器返回的文本为json数据。

完成第四步我们需要写的完整代码为:

    xmlHttp.onreadystatechange=function(){//xmlHttp的5种状态都会调用本方法
        if(xmlHttp.readState==4&&xmlHttp.status==200){//双重判断:判断是否为4状态,而且还要判断是否为200
            //获取服务器的响应内容
            var content=xmlHttp.responseText;//或var content= xmlHttp.responseXML;
        }
    } 

案例:省市联动

说明,该案例就是在网页上显示两个下拉列表,一个列表用于显示中国所有的省份,一个列表用于显示相应省份下的城市,当然这些数据是存在数据库中的,为了方便展示,我只在数据库中列举了两个省份和部分城市。

domain包下的city.java和province.java代码如下:

image
image

servlet包下的CityServlet.java与ProvinceServlet.java,用于向客户端发送响应数据代码如下:

image
image

dao包下的ProvinceDao.java代码如下:用于与数据库连接:

image

最终要的界面代码关于ajax的操作,代码如下:

image
image
image

数据库中的表有两张,一张是省份表province,一张是城市表city,如下:

image
image

结果如下:

image

当选择了相应的省份时,ajax会立即向服务器发送请求,然后服务器返回该省份下所有的城市,ajax将这些城市动态的显示在"请选择城市"列表中。达到部分刷新界面的效果。

2018.3.19更

欢迎加入我的Java交流1群:659957958。群里目前已有1800人,每天都非常活跃,但为了筛选掉那些不怀好意的朋友进来搞破坏,所以目前入群方式已改成了付费方式,你只需要支付9块钱,即可获取到群文件中的所有干货以及群里面各位前辈们的疑惑解答;为了鼓励良好风气的发展,让每个新人提出的问题都得到解决,所以我将得到的入群收费收入都以红包的形式发放到那些主动给新手们解决疑惑的朋友手中。在这里,我们除了谈技术,还谈生活、谈理想;在这里,我们为你的学习方向指明方向,为你以后的求职道路提供指路明灯;在这里,我们把所有好用的干货都与你分享。还在等什么,快加入我们吧!

2018.4.21更:如果群1已满或者无法加入,请加Java学习交流2群:305335626 。群2作为群1的附属群,除了日常的技术交流、资料分享、学习方向指明外,还会在每年互联网的秋春招时节在群内发布大量的互联网内推方式,话不多说,快上车吧!

联系

If you have some questions after you see this article,you can tell your doubts in the comments area or you can find some info by clicking these links.

相关文章

  • 玩转AJAX

    title: 玩转AJAXtags: AJAX 异步请求categories: AJAX 异步请求 客户端向服务器...

  • AJAX

    主要内容: ajax 是什么、原生ajax 写法和jQuery ajax写法。 AJAX 是什么 ajax,即As...

  • JavaScript进阶知识点--AJAX及JSON

    AJAX 关于 AJAX 什么是 AJAX AJAX 的全称是 Asynchronous JavaScript a...

  • HTML5权威指南 | 第五部分 高级功能

    三十二、使用AJAX(上) Ajax起步: 使用Ajax事件: Ajax请求的错误处理: 中止Ajax请求: 三十...

  • ajax学习笔记

    Ajax学习笔记 Ajax简介 1. Ajax是什么? Ajax : Asynochronous javascri...

  • AJAX

    一、简介 AJAX菜鸟教程 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML。 AJAX...

  • js之AJAX复习

    异步交互和同步交互 什么是Ajax? Ajax的工作原理。 Ajax包含的技术: Ajax的缺陷: Ajax的核心...

  • 复习jQuery - ajax

    jQuery ajax - ajax() 方法 $.ajax({ url:'oo.php', ...

  • jQuery中Ajax请求的使用和四个步骤示例

    ajax() 方法用于执行 AJAX(异步 HTTP)请求,所有的 jQuery AJAX 方法都使用 ajax(...

  • ajax

    1、什么是ajax? 2、ajax的原理 3、ajax的核心对象 4、ajax的优点: ajax的缺点: 被jqu...

网友评论

      本文标题:玩转AJAX

      本文链接:https://www.haomeiwen.com/subject/kgrjdftx.html