博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax的理解
阅读量:6892 次
发布时间:2019-06-27

本文共 1686 字,大约阅读时间需要 5 分钟。

  前端在与后端的交互中,ajax 起着重要作用,这篇主要是从ajax的原理、优缺点以及实现原理来进行阐述。

ajax的优点:

  1. 无刷新更新数据。页面无刷新,在页面内与服务器通信,用户体验好。
  2. 异步与服务器通信。使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。
  3. 界面与应用分离。数据与呈现分离,有利于分工合作。
  4. 被广泛支持。不需要下载浏览器插件或小程序,但需要允许JS在浏览器上运行。

ajax的缺点:

  1. ajax干掉了后退功能。在动态更新页面的情况下,用户无法回到前一个页面的状态,因为浏览器仅能记忆静态页面的变化。用户通常希望在点击后退按钮之后能够取得前一次操作。但在ajax应用程序中,这是无法实现的。
  2. 安全问题。会暴露比以前更多的服务器逻辑,可能会收到更多的攻击,如跨站脚本攻击、SQL注入攻击。
  3. 如果使用不当,ajax会增大网络数据流量,降低整个系统的性能。

ajax的原理:

  ajax相当于在用户与服务器之间加了一个中间层,使用操作与服务器响应异步化,并不是所有用户请求都会提交给服务器。只有确定需要从服务器读取新数据时再由ajax引擎代向服务器提交请求。
  它的原理简单来说就是通过XMLHTTPRequest对象向服务器发送异步请求,从服务器获得数据,然后用JS操作DOM来更新页面。

ajax的实现:

function ajax(obj){    var xhr = new XMLHTTPRequest();    obj.data = params(obj.data);              //序列化数据    if(obj.type.toLowercase() === 'get'){           //如果是get方法,则改造url        obj.url += obj.url.indexOf('?') === -1 ? '?' + obj.data : '&' + obj.data;    }        if(obj.async){                          //如果是异步方式,则监听readyState的变化        xhr.onreadyStateChange = function(){            if(xhr.readyState === 4){                if(xhr.status === 200){                    obj.success(xhr.responseText);                }            }        }    }        xhr.open(obj.type, obj.url, obj.async);                   if(obj.type.toLowercase() === 'get'){               //get方法不发送数据        xhr.send(null);    }    else{        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');        xhr.send(obj.data);    }        if(!obj.async){        if(obj.status === 200){            obj.success(xhr.respnseText);        }    }}function params(data){    var s = [];    for(var name in data){        s.push(URIComponentEncode(name)+'='+URIComponentEncode(data[name]));    }    return s.join('&');}复制代码

转载地址:http://wphbl.baihongyu.com/

你可能感兴趣的文章
iptables四个表五条链
查看>>
谈谈数据库中MyISAM与InnoDB区别
查看>>
一次执行webdriver所有的case
查看>>
我的友情链接
查看>>
[原创].NET 分布式架构开发实战之四 构建从理想和实现之间的桥梁(前篇)
查看>>
tomcat发布必须配置JAVA_HOME,但可以不配置CATALINA_HOME
查看>>
Oracle 闪回特性(FLASHBACK DATABASE)
查看>>
controllerAdvicer
查看>>
挂载WINDOWS共享目录
查看>>
史上最详细的vsftpd配置文件讲解
查看>>
跨域iframe自适应高度
查看>>
DBCP的使用
查看>>
大企业不妨先学小卖家
查看>>
Linux查找并拷贝文件命令
查看>>
真实的被流氓软件绑架的过程--鲁大师锁定浏览器主页修复
查看>>
jQuery中is和hasClass的用法
查看>>
我的25岁生日
查看>>
接口(Interface)设计方法和技术
查看>>
VR+Docker: 3D动漫<DOCKER化>的应用范例及其效益
查看>>
《笨方法学Python》ex24-31
查看>>