JQuery中常用的AJAX方法

一、AJAX概述

      Ajax全称为“Asynchronous JavaScript and XML”(异步的JavaScript和XML),它并不是指一种单一的技术,而是有机地利用了一系列交互式网页相关的技术所形成的结合体。它的出现,揭开了无刷新更新的页面的新时代,并有代替传统的Web方式和 通过隐藏的框架来进行异步提交的趋势,是Web开发应用的一个里程碑。

      优势:

       1、不需要插件支持;2、优秀的用户体验;3、提高Web程序的性能;4、减轻服务器和带宽的负担;

     不足:

       1、浏览器对XMLHttpRequest对象的支持度不足;2、破坏浏览器前进、“后退”按钮的正常功能;3、对搜索引擎的支持的不足;        4、开发和调试工具的缺乏。

二、JQuery中的Ajax

      JQuery对Ajax操作进行了封装,在JQuery中$.ajax()方法属于最底层的方法,第2层是load()、$.get()、和$.post(),第3 层是$.getScript()和$.getJSON()方法。

      1、   load()

       load()方法是JQuery中最为简单和常用的Ajax方法,能载入远程HTML代码并插入DOM中。它的结构为:

       load(   url    [,   data]  [,    callback ]);

      url:类型:String;说明:请求HTML页面的url地址

      data(可选)   类型:Object;说明:发送到服务器的Key/value数据

      callback(可选)  类型:Function  ;说明:请求完成时的回调函数,无论请求成功或失败。

      没有传递参数时,采用GET的方式传递;反之,采用POST方式。同时可以选择载入一个页面中的指定元素。可以通过 为url参数指定选择符,就可以很方便地从加载过来的HTML文档里筛选出所需要的内容。load()方法的url参数的语法结构为:“url selector”。注意,url和选择器之间有一个空格。例如:

     $("#resText").load("test.html  .para");为加载test.html页面中class为"para"的内容。

      回调函数有三个参数,分别代表请求返回的内容、请求状态(success、error、notmodified、timeout种状态)和XMLHttpRequest对象。

      2、$.get()方法和$.post()方法

   load()方法通常用来从Web服务器上获取静态的数据文件,然而这并不能体现Ajax人全部价值。在项目中如果需要传递一些参数 给服务器中的页面,那么可以使用$.get()或者$.post方法。

  $.get()方法结构为

  $.get(url  [,  data]  [,  callback]  [,   type] );

  参数说明:

   url:类型:String;说明:请求的HTM页的URL地址

   data(可选):类型:Object;说明:发送到服务器中的Key/value数据会作为QueryString附加到请求URL中。

   callback()可选:类型:Function; 说明:载入成功时回调函数(只有当Response的

返回状态是success才调用该方法)自动将请求结果和状态传递给该方法。

   type(可选):类型:String;说明:服务器端返回内容的格式,包括xml、html、script、json、text、_default。

   备注:$.get()方法的回调函数只有两个参数,代码如下:

    function(data,  tesStatus){

         data:返回的内容,可以是XML文档、JSON文件、HTML片段等等。

          textStatus:请求状态:success、error、notmodified、timeout4种

    }

回调函数只有当数据成功返回后才被调用,这点与load() 方法不一样。

$.post()方法

 它与$.get()方法的结构和使用方式都相同,不过它们之间仍然有以下区别 :

  1:GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给Web服务器。

  2:GET方式对传输的数据有大小限制(通常不能大于2KB),而使用POST方式传递的数据量要比GET方式大得多

  3:GET方式请求的数据 会被浏览器缓存起来,因此其他人就可以从浏览器的历史记录中读取到这些数据,如账号和密码等。这带来一定的安全性问题。

  4:GET方式和POST方式传递的数据在服务器端的获取也不相同。在PHP中,GET方式的数据可以用$_GET[]获取,而POST方式可以用 $_POST[]获取。两者都可以用$_REQUEST[]来获取。

      $.getScript()方法和$.getJson()方法

    1、$.getScript()

     该方法可以直接加载.js文件。与加载一个HTML片段一样简单方便,并且不需要对JavaScirpt文件进行处理。

    2、$.getJSON()

     该方法用于加载JSON文件,与$.getScript()方法的用法相同。该方法也提供了一个回调函数,示例如下 :

      $(function(){

            $('#send').click(function(){

                $.getJSON('test.json',function(data){

                         data:返回的数据     

                           });

                     });

             });

在通过data变量来遍历相应的数据时,可以使用JQuery提供的遍历广场$.each(),该方法可以用于遍历对象和数组。

它不同于JQuery中的对象的each()方法,它是一个全局函数,不操作JQuery对象,而是以一个数组或者对象作为第1个参数,以一个回调函数作为第2个参数。回调函数用有两个 参数:第1个为对象的成员或数组的索引,第2个为对应变量或内容。

    $.ajax() 方法

    该方法只有1个参数,但在这个对象里包含了$.ajax()方法所需的请求设置以及回调函数等信息,参数以Key/value的形式存在,所有参数都是可选的,参数说明如下:

    url  类型:String;说明:(默认为当前页的地址)发送请求的地址

    type  类型:String;说明:请求的方式默认为GET。也可以使用PUT或DELETE但仅部分浏览器支持。

    timeout  类型:Number;说明:设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。

    data  类型:Object或String;说明:发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。GET请求中将附加在URL后。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。

   dataType  类型:String;说明:预期服务器返回的数据类型。如果不指定,JQuery将自动根据HTTP包MIME信息返回responseXML或responseText,并作为回调函数参数传递。

  可用的类型如下 :

  xml:返回XML文档,可用JQuery处理。

  html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。

  script:返回纯文本JavaScript代码。不会自动缓存结果,除非设置了cache参数。注意在远程请求时,所有POST请求都将转为GET请求。

  json:返回JSON数据。

  jsonp:JSONP格式。使用JSONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。

  text:返回纯文本字符串。

  beforeSend 类型:Function  说明:发送请求前可以修改XMLHttpRequest对象的函数,例如添加自定义HTTP头。在beforeSend中如果返回false可以取消本次Ajax请求。XMLHttpRequest对象是唯一的参数。

  complete  类型:Function  说明:请求完成后调用的回调函数(请求成功或失败时均调用)。

  参数:XMLHttpRequest对象和一个描述成功请求类型的字符串。

   function (XMLHttpRequest,textStatus){

     

    }

  success   类型:Function;说明:请求成功后调用的回调函数,有两个参数。

   function  (data , textStatus){}data可能是xmlDoc   jsonObj   html   text等等。

  error  类型:Function  ;说明:请求失败时被调用的函数。该函数有3个参数,即

   XMLHttpRequest  对象、错误信息、捕获的错误对象(可选)。

 global  类型:Boolean  说明:默认为true,表示是否触发全局Ajax事件。设置为false将不会触发 全局Ajax事件,AjaxStart或AjaxStop可用于控制各种Ajax事件。

  最后JQuery中的Ajax全局事件函数。主要体现在对调用Ajax方法的过程中的HTTP请求的控制。

   ajaxStart() :当Ajax请求开始时,会触发ajaxStart方法的回调函数;请求结束时,会触发ajaxStop方法的回调函数。ajaxComplete(callback)请求完成执行的函数;

  ajaxError(callback)请求发生错误时执行的函数,捕捉到的错误可以作为最后一个参数传递。

  ajaxSend(callback) 请求发送前执行的函数。

  ajaxSeccess(callback)请求成功时执行的函数。

   



猜你喜欢

转载自blog.csdn.net/yangkaige111/article/details/71302347