学习ajax

来源:互联网 发布:做淘宝客服基本规则 编辑:程序博客网 时间:2024/06/16 21:07

一、概念

1、ajax 的全称是Asynchronous JavaScript and XML。ajax  是一种用于创建快速动态网页的技术。

2、通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

3、ajax 的原理:通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。

4、ajax 编码步骤:创建XmlHttpRequest对象、注册状态监控回调函数、建立与服务器的异步连接、发出异步请求。

5、ajax 应用程序与浏览器和平台无关的。

6、异步传输是面向字符的传输,它的单位是字符;而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的。

二、ajax同步与异步

1、ajax异步:当把asyn设为true时,这时ajax的请求时异步的。当ajax发送请求后,在等待服务器端返回的这个过程中,前台会继续执行ajax块后面的脚本,直到服务器端返回正确的结果才会去执行ajax里的函数。也就是说这时候执行的是两个线程,ajax块发出请求后一个线程,ajax块后面的脚本另一个线程。

2、ajax同步:当把asyn设为false时,这时ajax的请求时同步的。只有ajax请求成功之后,才会执行脚本2。也就是说,这个时候ajax的ajax里的函数没有执行的情况下,脚本2是不执行的,

三、ajax由下列技术组合而成

1、使用CSS和XHTML来表示。

2、使用DOM模型来交互和动态显示。

3、使用XMLHttpRequest来和服务器进行异步通信。

4、使用javascript来绑定和调用。

四、创建XMLHttpRequest对象

1、XMLHttpRequest用于在后台与服务器交换数据。

2、创建XMLHttpRequest对象

variable=new XMLHttpRequest();//除了IE5、IE6variable=new ActiveXObject(“Msxml2.XMLHTTP”) //IE

五、向服务器发送请求

1、将请求发送到服务器

xmlhttp.open(“GET”,”ajax_info.txt”,true);xmlhttp.send();

2、open(method,url,async):规定请求的类型、URL以及是否异步处理请求

method:请求的类型(GET或POST)

url:文件在服务器上的位置

async:true(异步)或false(同步)

3、send(String):将请求发送到服务器

String:仅用于POST请求

4、在以下情况中,使用POST请求:

1)无法使用缓存文件(更新服务器上的文件或数据库)

2)向服务器发送大量数据(POST)没有数据量限制

3)发送包含未知字符的用户输入时,POST比GET更稳定可靠

六、服务器响应

1、responseText:获得字符串形式的响应数据

2、responseXML:获得XML形式的相应数据

七、onreadystatechange事件

1、每当readyState改变时,就会触发onreadystatechange事件,readyState属性存有XMLHttpRequest的状态信息。

2、XMLHttpRequest对象的3个属性

1)onreadystatechange:存储函数(函数名),每当readyState属性改变时,就会调用该函数。

2)readyState:存有XMLHttpRequest的状态,从0到4发生变化。

0:请求未初始化(对象已建立,但是未初始化(尚未调用open()方法))

1:服务器连接已建立(对象已建立,尚未调用send()方法)

2:请求已接收(send()方法已调用,但是当前的状态及http投未知)

3:请求处理中(已接受部分数据)

4:请求已完成,且响应已就绪(数据接收完毕,此时可以通过responseXML和responseText获取完整的回应数据)

3)status

200:OK

404:未找到页面

3、在onreadystatechange事件中,规定当服务器响应已做好被处理的准备时所执行的任务。

4、当readyState等于4且状态为200时,表示响应已就绪。

5、回调函数是一种以参数形式传递给另一个函数的函数。

八、$.ajax()方法

1、url

要求为String类型的参数,(默认为当前页地址)发送请求的地址。

2、type

要求为String类型的参数,请求方式(post或get),默认为get。其他http请求方法,例如put、delete也可以使用,但仅部分浏览器支持。

3、timeout

要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。

4、async

 要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,将此选项设置为false。同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。

5、cache

要求为Boolean类型的参数,默认为true(当dataType为script时,默认为false),设置为false将不会从浏览器缓存中加载请求信息。

6、data

要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看  processData选项。对象必须为key/value格式。如果是数组,JQuery将自动为不同值对应同一个名称。

7、dataType

要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递。

可用的类型如下:
(1)xml:返回XML文档,可用JQuery处理。
(2)html:返回纯文本HTML信息,包含的script标签会在插入DOM时执行。
(3)script:返回纯文本JavaScript代码。不会自动缓存结果,除非设置了cache参数。在远程请求时(不在同一个域下),所有post请求都将转为get请求。
(4)json:返回JSON数据。
(5)jsonp:JSONP格式。使用SONP形式调用函数时,,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。
(6)text:返回纯文本字符串。

8、beforeSend

要求为Function类型的参数,发送请求前可以修改XMLHttpRequest对象的函数。在beforeSend中如果返回false可以取消本次ajax请求。XMLHttpRequest对象是惟一的参数。
            

function(XMLHttpRequest){               this;   //调用本次ajax请求时传递的options参数            }

9、complete

要求为Function类型的参数,请求完成后调用的回调函数(请求成功或失败时均调用)。参数:XMLHttpRequest对象和一个描述成功请求类型的字符串。
       

   function(XMLHttpRequest, textStatus){             this;    //调用本次ajax请求时传递的options参数          }

10、success

要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。
(1)由服务器返回,并根据dataType参数进行处理后的数据。
(2)描述状态的字符串。
   

      function(data, textStatus){            //data可能是xmlDoc、jsonObj、html、text等等            this;  //调用本次ajax请求时传递的options参数         }

11、error

要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。ajax事件函数如下:
   

    function(XMLHttpRequest, textStatus, errorThrown){          //通常情况下textStatus和errorThrown只有其中一个包含信息          this;   //调用本次ajax请求时传递的options参数       }

12、contentType

要求为String类型的参数,当发送信息至服务器时,内容编码类型默认为"application/x-www-form-urlencoded"。该默认值适合大多数应用场合。

13、dataFilter

要求为Function类型的参数,给Ajax返回的原始数据进行预处理的函数。提供data和type两个参数。data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。函数返回的值将由jQuery进一步处理。
         

   function(data, type){                //返回处理后的数据                return data;            }

14、dataFilter

要求为Function类型的参数,给Ajax返回的原始数据进行预处理的函数。提供data和type两个参数。data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。函数返回的值将由jQuery进一步处理。
        

    function(data, type){                //返回处理后的数据                return data;            }

15、global

要求为Boolean类型的参数,默认为true。表示是否触发全局ajax事件。设置为false将不会触发全局ajax事件,ajaxStart或ajaxStop可用于控制各种ajax事件。

16、ifModified

要求为Boolean类型的参数,默认为false。仅在服务器数据改变时获取新数据。服务器数据改变判断的依据是Last-Modified头信息。默认值是false,即忽略头信息。

17、jsonp

要求为String类型的参数,在一个jsonp请求中重写回调函数的名字。该值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分。

18、username

要求为String类型的参数,用于响应HTTP访问认证请求的用户名。

19、password

要求为String类型的参数,用于响应HTTP访问认证请求的密码。

20、processData

要求为Boolean类型的参数,默认为true。默认情况下,发送的数据将被转换为对象(从技术角度来讲并非字符串)以配合默认内容类型"application/x-www-form-urlencoded"。如果要发送DOM树信息或者其他不希望转换的信息,设置为false。

21、scriptCharset

要求为String类型的参数,只有当请求时dataType为"jsonp"或者"script",并且type是GET时才会用于强制修改字符集(charset)。通常在本地和远程的内容编码不同时使用。

 

 

 

 

 

原创粉丝点击