浅谈Ajax

今天想整理出我所理解的Ajax,可能不全,也可能不太对,但是这是现阶段所了解的ajax,若有新的发现,还会继续补充

一:Ajax基础

1. 什么是Ajax

> 无刷新数据读取
> AJAX = 异步 JavaScript 和 XML。
> AJAX 是一种用于创建快速动态网页的技术。
> ajax能且仅能从服务器上读取文件信息
> 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
> 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

2. Ajax的工作原理

这里写图片描述

3.AJAX是基于现有的Internet标准

> XMLHttpRequest 对象 (异步的与服务器交换数据)
> JavaScript/DOM (信息显示/交互)
> CSS (给数据定义样式)
> XML (作为转换数据的格式)

二:使用Ajax

完成一个ajax需要有四个步骤,创建Ajax对象,连接服务器,发送请求和接收返回

1. 创建Ajax对象

>所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。
> 老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:
所以如下方法是创建了一个兼容性的ajax对象
//1、创建Ajax对象
    var oAjax = null;
    if(window.XMLHttpRequest){
        oAjax = new XMLHttpRequest(); //ie6及以下不兼容
    }else{
        oAjax = new ActiveXObjext("Microsoft.XMLHTTP");
    }

2. 连接服务器

连接服务器用open(方法,文件名,异步传输) 方法
> 方法:GET/POST
GET:用于获取数据(如:浏览贴子),把数据放在url(网址)里来提交
POST:用于上传数据(如:用户注册),把数据放在不是url的地方提交
> 文件名:你的文件名
> 同步和异步:false/true
事件一件一件进行就是同步
多件事一起进行就是异步
ajax是异步请求数据
//2、连接服务器
    oAjax.open('GET',url,true);
$ 科普GET和POST的区别
get在url里传送数据:安全性低、容量小
post安全性一般、容量几乎无限
get便于分享(商品地址和url有关),适合获取,且会缓存
post更适合上传(图片等)
POST无法使用缓存文件(更新服务器上的文件或数据库)
POST可以向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

3. 发送请求

//3、发送请求
    oAjax.send();
这个固定这么写,所有浏览器都兼容,没什么可说的

4. 接收返回

onreadystatechange:与服务器发生数据传输时
readyState属性:请求状态
0、(未初始化)还没有调用open()方法
1、(载入)已调用send()方法,正在发送请求
2、(载入完成)send()方法完成,已收到全部相应内容
3、(解析)正在解析相应内容
4、(完成)相应内容解析完成,可以在客户端调用了
status属性:是否成功(200成功,常见失败404(页面未找到))
responseText属性:返回的数据
//4、接收服务器的返回
    oAjax.onreadystatechange = function(){
        if(oAjax.readyState ==4){  //完成
            if(oAjax.status ==200){
                //alert('成功: '+oAjax.responseText);
                fnSucc(oAjax.responseText);
            }else{
                //alert('失败');
                if(fnFaild){
                    fnFaild();
                }
            }
        }
    }
$页面中引用时
ajax被封装成一个函数,在页面中调用时应如下所写:
ajax('bbb.txt',function(str){

    },function(){

    });      //第一个函数是请求成功时执行的函数,第二个函数是请求失败时执行的函数

三:Ajax的优缺点

1.优点

1.无刷新更新数据:
能在不刷新整个页面的前提下与服务器通信维护数据。更为迅捷地响应用户交互,避免了发送没有改变的信息,减少用户等待时间,带来非常好的用户体验。
2.异步与服务器通信:
AJAX使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。优化了Browser和Server之间的沟通,减少不必要的数据传输、时间及降低网络上数据流量。
3.前端和后端负载平衡:
把一些服务器负担的工作转嫁到客户端,用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。这种“按需取数据”的方式,可最大程度的减少冗余请求和对服务器造成的负担,提升站点性能。
4.基于标准被广泛支持:
AJAX基于标准化的并被广泛支持,不需要下载浏览器插件或者小程序,只需要客户允许JavaScript在浏览器上执行。随着Ajax的成熟,出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。
5.界面与应用分离:
Ajax使WEB中的界面与应用分离(也可以说是数据与呈现分离),有利于分工合作、减少非技术人员对页面的修改造成的WEB应用程序错误、提高效率、适用于现在的发布系统。

2.缺点

1.AJAX干掉了Back和History功能:
动态更新的页面,用户无法回到前一个页面状态,因为浏览器仅能记忆历史记录中的静态页面。解决方案是使用URL片断标识符(通常被称为锚点,即URL中#后面的location. hash)来保持跟踪。
2.AJAX的安全问题:
Ajax技术对企业数据建立了一个直接通道。会暴露比以前更多的数据和服务器逻辑。并会隐藏客户端的安全扫描技术,允许黑客从远端服务器上建立新的攻击。还有Ajax也难以避免跨站点脚步攻击、SQL注入攻击和基于Credentials的安全漏洞等等。
3.对搜索引擎支持较弱:
对搜索引擎的支持比较弱。如果使用不当,AJAX会增大网络数据的流量,从而降低整个系统的性能。
4.破坏程序的异常处理机制:
至少从目前看来,像 Ajax.dll,Ajaxpro.dll这些Ajax框架是会破坏程序的异常机制的。分别采用Ajax和传统的form提交的模式来删除一条数据……给调试带来了很大的困难。
5.违背URL和资源定位的初衷:
你在一个URL地址下面看到的和我在这个URL地址下看到的内容是不同的。这个和资源定位的初衷是相背离的。
6.AJAX不能很好支持移动设备:
如手机、PDA等现在还不能很好的支持Ajax。
7.客户端过大,太多客户端代码造成开发上的成本:
编写复杂、容易出错 ;冗余代码比较多(层层包含js文件是AJAX的通病,再加上以往的很多服务端代码现在放到了客户端);破坏了Web的原有标准。
$ 科普常见状态码及其对应的含义
100——客户必须继续发出请求
  • 101——客户要求服务器根据请求转换HTTP协议版本
  • 200——交易成功
  • 201——提示知道新文件的URL
  • 202——接受和处理、但处理未完成
  • 203——返回信息不确定或不完整
  • 204——请求收到,但返回信息为空
  • 205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
  • 206——服务器已经完成了部分用户的GET请求
  • 300——请求的资源可在多处得到
  • 301——删除请求数据
  • 302——在其他地址发现了请求数据
  • 303——建议客户访问其他URL或访问方式
  • 304——客户端已经执行了GET,但文件未变化
  • 305——请求的资源必须从服务器指定的地址得到
  • 306——前一版本HTTP中使用的代码,现行版本中不再使用
  • 307——申明请求的资源临时性删除
  • 400——错误请求,如语法错误
  • 401——请求授权失败
  • 402——保留有效ChargeTo头响应
  • 403——请求不允许
  • 404——没有发现文件、查询或URl
  • 405——用户在Request-Line字段定义的方法不允许
  • 406——根据用户发送的Accept拖,请求资源不可访问
  • 407——类似401,用户必须首先在代理服务器上得到授权
  • 408——客户端没有在用户指定的饿时间内完成请求
  • 409——对当前资源状态,请求不能完成
  • 410——服务器上不再有此资源且无进一步的参考地址
  • 411——服务器拒绝用户定义的Content-Length属性请求
  • 412——一个或多个请求头字段在当前请求中错误
  • 413——请求的资源大于服务器允许的大小
  • 414——请求的资源URL长于服务器允许的长度
  • 415——请求资源不支持请求项目格式
  • 416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
  • 417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求
  • 500——服务器产生内部错误
  • 501——服务器不支持请求的函数
  • 502——服务器暂时不可用,有时是为了防止发生系统过载
  • 503——服务器过载或暂停维修
  • 504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
  • 505——服务器不支持或拒绝支请求头中指定的HTTP版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值