AJAX的含义与用法

举报
幻影 发表于 2021/07/21 22:36:44 2021/07/21
【摘要】 本文主要讲述了异步通信的使用场景及AJAX的含义、XMLHttpRequest的属性与方法以及使用Ajax的步骤。

 一、异步加载的优点

  我们浏览网页时,由客户端(浏览器)发送请求到服务器,服务器做出响应给浏览器,这是http协议的基本形式。浏览器与服务器的通信方式有两种,一种是同步的(Synchronous 简称sync代表同步),由浏览器发出http请求,服务器做出响应后页面全部刷新;一种是异步的(Asynchronous 简称async 代表异步),由AJAX引擎发向服务器发出请求,不需要刷新全部页面,只需要更新部分页面即可。异步相对同步来说具有很大的优点,如我们注册或登录时,部分数据有问题只刷新部分数据而无须将整个页面刷新,大大的优化了用户体验;如一些页面的数据量很大,我们即可采用懒加载的方法,先加载少量数据,再根据用户浏览时滚动条的位置再加载数据,可以大大的减轻服务器的负担。

二、AJAX的含义与原理

AJAX便是在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术。

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

AJAX的核心对象是XMLHttpRequest ,利用XMLHttpRequest对象与服务器通信。下面是同步与异步通信的应用模型(图片来源与网络,如有侵权,自行删除)

三、XMLHttpRequest的属性与方法。

1、XMLHttpRequest的属性

1)Onreadystatechange  状态改变的事件触发器,每个状态改变时都会触发这个事件处理器,通常会调用一个javascript函数

2)readyState  请求的状态  5个可取值,0=未初始化 1=正在加载  2=已加载  3=交互中  4=完成。

3)Status  服务器的HTTP状态码(如:404=“文件未找到” 200=“成功”等)

4)responseText  服务器的响应,返回数据的文本。

2、XMLHttpRequest的方法

1)openmethod,url,async)方法。 第一个参数定义发送请求所使用的方法,第二个参数规定服务器端脚本的URL,第三个参数规定对请求是同步还是异步处理,一般是true,表示异步处理。

2)send()方法,向服务器发送请求,如果是发送请求用get方法,一般不带参数,如是post,可带参数。

3) setRequestHeader(“Content-type”,”application/x-www-form-urlencoded”)方法。(如果向服务器发送请求用的是post请求时,需要写上,如是get,可省略

四、AJAX的使用

//第一步 创建XMLHttpRequest对象(为了兼容ie5,ie6,采用如下写法)
    var xhr=null;
    if(window.XMLHttpRequest){
        xhr=new XMLHttpRequest();
    }else if(window.ActiveXObject){
        xhr=new ActiveXObject("Microsoft.XMLHTTP");
    }
//第二步,初始化数据 ,如果用get,则 xhr.setRequestHeader("Cont-type","application/x-www-form-urlencoded");可省略。
    xhr.open("post","/ajax",true);
    xhr.setRequestHeader("Cont-type","application/x-www-form-urlencoded");
//第三步,向服务器发送请求,
    xhr.send();
//第四步,利用onreadystatechange检测请求状态及服务器的状态码,调用回调函数,回调函数便是服务器处理完成请求,再返回到浏览器所实现的功能。
    xhr.onreadystatechange=function(){
        if(xhr.ReadyState=="4"){
            if(xhr.status=="200"){
               console.log(xhr.respnoseText);
            }
        }
    }


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。