javascript:Ajax与Comet

Posted LittleGirl_MyBaby

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript:Ajax与Comet相关的知识,希望对你有一定的参考价值。

一:使用XMLHttpRequest对象

  ajax的核心是XMLHttpRequest对象。IE7以下的浏览器XHR定义方法不同。对于较高级的浏览器 var xhr = new XMLHttpRequest(). 

var xhr  = new XMLHttpRequest();
xhr.open()
xhr.send(null)

xhr.open接收三个参数,第一个为发送方式get或者post。第二个参数是URL,第三个参数是布尔值,是否是异步。

xhr.send(null),参数为向服务器发送的数据,如果没有,必须写上null.

浏览器的响应数据作为xhr的属性:respenseText,responseXML,status,statusText。status的状态为200表示成功,状态为304表示内容没有被修改,可以直接使用缓存。

  2)异步请求下,xhr的属性readyState,表示当前活动状态,等于4时表示成功,每当状态改变时都会调用onreadystatechange()事件,该事件的定义必须放在xhr.open函数之前。

  xhr.abort()取消异步请求

  3)设置和获取http请求的头部信息

    通过方法xhr.setRequestHeader(头部字段名称名称,要设置的值)进行设置。

    获取响应的头部信息:xhr.getResponseHeader(头部字段名称) , getAllResponseHeaders()获取所有的头部信息

  4)get请求--url字符串编码问题

    url中的每个字符串必须要使用encodeURLComponent()进行编码,例如example.php?name1=value1&name2=value2

  5) post请求

    向服务器发送数据,xhr.send(data)。FormData对象,定义发送的表单对象,var data = new FormData(),data.append(key,value),FormData对象是在xhr2级中出现的。

  6)timeout 超时设定

    xhr.timeout  = 1000hs。当超时时会触发ontimeout事件,xhr.ontimeout = function(){}

var xhr  = new XMLHttpRequest();
xhr.onreadystatechange = function(){
  if (xhr.readystate == 4)       {
    try{
    if((xhr.statue>=200 && xhr.status<=300)||xhr.status==304)          {xhr.responseText}
}  
catch(ex){//假设有ontimeout处理事件}
}       
}

xhr.open();
xhr.timeout = 1000;
xhr.ontimeout = function(){}
xhr.send(null)

   

二:使用XMLHttpRequest事件

  进度事件:有以下6个进度事件。loadstart、progress、error、abort、load、loadend。

  1) 使用load事件优化:

var xhr  = new XMLHttpRequest();
xhr.onload = function(){
      
    try{
    if((xhr.statue>=200 && xhr.status<=300)||xhr.status==304)          {xhr.responseText}
}  
catch(ex){//假设有ontimeout处理事件}
      
}

xhr.open();
xhr.timeout = 1000;
xhr.ontimeout = function(){}
xhr.send(null)

浏览器只要接收到服务器响应,不管状态如何都会触发load事件,因此必须要检查status.

   2)使用progress事件创建进度条

    onprogress事件接收到一个event对象,event对象有个属性target,指向XHR对象,另外还包括lengthComputabel(布尔值,表示是否可用), totalsize , position。

三:跨域Ajax通信的限制

  CORS(跨域资源共享),其基本思想是自定义http头部信息,让浏览器与服务器进行沟通,从而决定请求是成功还是要失败。

以上是关于javascript:Ajax与Comet的主要内容,如果未能解决你的问题,请参考以下文章

[笔记]《JavaScript高级程序设计》- Ajax与Comet

Ajax与Comet

Ajax与Comet-JavaScript高级程序设计第21章读书笔记

Ajax与Comet-JavaScript高级程序设计第21章读书笔记

反向Ajax,实现服务器向客户端推送消息之 Comet

js-Ajax与Comet