ajax学习总结

ajax是什么

全称Asynchronous Javascript and XML(异步javascript和XML);它的出现揭开了无刷新更新页面的新时代;

ajax的5种状态

1.(0未初始化)还没有调用send()方法;

  此阶段确认XMLHttpRequest对象是否创建,并为调用open()方法进行未初始化作好准备。值为0表示对象已经存在,否则浏览器会报错--对象不存在。

2.(1载入)已调用send()方法,正在发送请求;

  此阶段对XMLHttpRequest对象进行初始化,即调用open()方法,根据参数(method,url,true)完成对象状态的设置。并调用send()方法开始向服务端发送请求。值为1表示正在向服务端发送请求。

3.(2载入完成)send()方法执行完成,已经接收到全部响应内容;

  此阶段接收服务器端的响应数据。但获得的还只是服务端响应的原始数据,并不能直接在客户端使用。值为2表示已经接收完全部响应数据。并为下一阶段对数据解析作好准备。

4.(3交互)正在解析相应内容;

  此阶段解析接收到的服务器端响应数据。即根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取的格式,为在客户端调用作好准备。状态3表示正在解析数据。

5.(4完成)响应内容解析完成,可以在客户端调用了;

  此阶段确认全部数据都已经解析为客户端可用的格式,解析已经完成。值为4表示数据解析完毕,可以通过XMLHttpRequest对象的相应属性取得数据。

  1. /*声明用来装入XMLHttpRquest对象*/
    var xhr;
    
    /*if ie5-ie6以ActiveXObject方式引入XMLHttpRequest对象;
       else windowsde的子对象;   
    */
    if(window.ActiveXObject){
       xhr=new Active XObject("Miceosoft.XMLHTTP");       
    }else{
       xhr=new XMLHttpRequest();   
    }
    
    /*实例化成功后,open()方法初始化XMLhHttpRequest对象,指定HTTP方法和使用的服务器url*/
    xhr.open("GET","test.php",true)
    xhr.open('post','test.php',true);/*注册XMLhHttpRequest对象回调函数,当readyState值改变时,激发onreadystatechange事件*/ xhr.onreadystatechange=RequestCallBack; /*使用send()方法发送请求,get方式参数可以为空*/ xhr.send(null)
    xhr.send('name1=value1&name2=value2');
    /*请求状态改变时,调用RequestCallBack,当readystate=4并且http状态200,执行*/ function RequestCallBack(){ if(xhr.readyState==4){ if(xhr.status==200){ //xhr.responseText; } } }

     

jquery中的ajax

一、get和post方式的不同

1.get会将参数跟在url后面进行传递,而post请求则是作为http消息的实体内容发送给web服务器,在ajax中这两种区别对用户是不可见的;

2.get方式对数据的大小有限制(2kb),而post方式传递的数据要不get方式大得多;

3.get方式请求的数据会被浏览器缓存起来,存在安全问题,而post方式可以避免这些问题;

4.服务器端的获取方式不相同,get通过$_GET[]获取,post通过$_POST[]获取,都可用$_REQUEST[]来获取;

二、常用方法

load(url,[data],[callabck]);load()方法传递参数没有参数是get方式,有参数是post方式,自动指定;回调函数3个参数,返回的内容、请求状态(success/error/notmodified/timeout)、XMLHttpRequest对象;在load()方法中ajax请求成功与否回调函数都会被触发。

$.get(url,[data],[callback],[type]);$.post(url,[data],[callback],[type]);type包括xml/html/script/json/text/_default;回调函数只有在请求成功后才被执行;html最简单,xml文档可移植性很强是未来的主流数据交换格式;json应用也比较多。

$.getScript()用到js文件时候再加载;

$.getJSON()加载json,通过回调函数对返回的数据进行处理,利用$.each()遍历对象和数组。$.each()不同于jquery的each()对象,不错做jquery对象,而是以一个数组或对象作为第一个参数,以一个回调函数作为第二个参数,回调函数拥有两个参数对象成员和数组索引,

$(function(){
  $("#send").click(function(){
    $.getJSON('test.php',function(){
      var html='';
      $.each(data,function(textindex,text){
        html+='<div class='xxx'></div>'
      })
      $("xxxx").html(html);
    })
  })
})

通过使用JSONP形式的回调函数加载器他网站的json数据。

$.ajax(options)方法

url:string 发送请求地址;

type:string  请求方式  默认是get方式;

timeout:number  设置请求超时时间;

data:object或string  ;

dataType:string  xml、html、script、json、jsonp、text;

beforesend:function ;

conplete:function 请求完成后调用的回调函数;

success:function 请求成功后调用的回调函数,有两个参数data、textStatus;

error:function 请求失败  三个参数XMLHttpRequest对象、错误信息、捕获的错误信息;

global:boolean 默认true触发全局ajax,AjaxStart或AjaxStop可用于控制各种ajax时间;

$.ajax()方法是jquery最底层的ajax实现,因此可以替代前面所有的方法;

 

posted @ 2015-08-04 18:18  best仙  阅读(428)  评论(0编辑  收藏  举报