jQuery与Ajax的应用

本文详细解析了Ajax技术的四大优势,包括无需插件、提升用户体验、增强程序性能及减少服务器负担,并揭示了其面临的挑战,如浏览器兼容性问题、破坏历史记录功能和搜索引擎友好性不足。同时,介绍了如何通过创建XMLHttpRequest对象实现Ajax操作,以及关键方法如load、$.get、$.post等的使用。最后,阐述了如何通过$.ajax方法实现更灵活的请求控制,并提供了序列化元素、全局事件处理及加载外部资源的方法。

一,Ajax的优势
  1,不需要插件的支持
  2,优秀的用户体验
  3,提高web程序的性能
  4,减轻服务器和带宽的负担
二,Ajax的不足
  1,浏览器对XMLHttpRequest对象的支持度不足
  2,破坏浏览器前进,后退按钮
  3,对搜索引擎的支持不足
  4,开发和调试工具缺乏
三,Ajax的XMLHttpRequest对象

  function createXHR(){
    if(typeof XMLHttpRequest != "undefined"){
      return new XMLHttpRequest();
    }else if(typeof ActiveXObject != "undefined"){
      if(typeof argument.callee.activeXString != "string"){
        var versions = ["MSXML.XMLHttp.6.0","MSXML.XMLHttp.3.0","MSXML.XMLHttp"],i,len;
        for(i=0,len=versions.length;i<len;i++){
          try{
            new ActiveXObject(versions[i]);
            argument.callee.activeXString = versions[i];
          }catch(ex){//跳过}
        }
      }
      return new ActiveXObject(argument.callee.activeXString);
    }else{
      throw new Error("No XHR object available");
    }
  }

四,load()方法
  1,载入html文档
  load(url [,data] [,callback])
  url:请求页面的URL地址,string类型
  data,发送至服务器的key/value数据,object类型
  callback,请求完成时的回调函数,不关请求失败,function类型
  2,筛选载入的html文档
  url参数后面接选择符,如load("test.html .class")
  3,传递方式
  data参数,没有给定则为get请求方式,data参数给定就是post请求方式
  4,回调参数
  回调函数中包含三个参数,responseText,textStatus,XMLHttpRequest
五,$.get()方法和$.post()方法
  1,$.get()方法,$.get(url [,data] [,callback] [,type])
  url:请求的html页面地址,为string类型
  data,发送至服务器的key/value数据,作为queryString附加到请求URl中
  callback,载入成功时回调函数,function类型
  type,服务器返回内容的格式,包括xml,html,script,json,text,
  回调函数有两个参数,data:返回的内容格式,textStatus:请求状态,success,error,notmodefied,timeout
  返回的数据格式有
    html片段,function(data,textStatus){$("").html(data)},添加到页面
    XML文档,function(data,textStatus){var username = $(data).find("coment").attr("username");var txtHtml ="                        <div>username</div>";$("").html(txtHtml);}
    JSON文档,function(data,textStatus){var username = data.username;var txtHtml = "<div>username</div>";$("").html(txtHtml);}
  2,$.post()方法
  get请求将参数跟在URL后进行传递,而POST请求将参数作为HTTP消息的实体内容发送给服务器,在Ajax中这种区别不可见
  get请求对传输的数据大小限制(不大于2KB),POST请求方式不受限制
  get请求的数据会被浏览器缓存起来,较不安全,POST避免这种情况
  get请求的数据在php中用$_GET[]获取,post请求用$_POST[]获取,两者都可以用$_REQUEST[]获取
六,$.getScript()方法和$.getJson()方法
  1,$.getScript()方法,$.getScript("test.js"),动态加载一个外部js文件
  也有回调函数,在js文件载入成功后调用
  2,$.getJson()方法,$.getJson("test.json"),动态加载一个外部json文件
  回调函数有一个data参数,一般在回调函数里处理返回的数据
  3,$.each()方法,用来遍历data中的数据,传人两个参数(数组或对象,回调函数(对象的成员或数组的索引,对应遍历或内容))
七,$.ajax()方法
  $.ajax(options)
  参数表
  url:string,发送请求的url地址
  type:string,请求方式,默认为GET
  timeout:Number,设置请求超时时间,覆盖$.ajax()方法的全局设置
  data:object或string,发送到服务器的数据,GET请求中奖附加到URL后,对象为key/value格式
  dateType:string,预期服务器返回的数据类型
  beforeSend:function,发送请求前可以修改XMLHttpRequest对象的函数,
  complete:function,请求完成后调用的回调函数,
  success:function,请求成功后调用的回调函数,两个参数(服务器返回的data,textStatus)
  error:function,请求失败时被调用的函数(XMLHttpRequest对象,错误信息,捕获的错误对象)
  global:boolean,默认为true,表示是否触发全局Ajax对象
八,序列化元素
  1,serialize()方法
  作用于将DOM元素内容序列化为字符串,用于ajax请求
  $.get("get.php",$("#form").serialize(),function(){});
  $(":checkbox,:radio").serialize();把复选框和单选框的值序列化
  2,serializeArray()方法
  序列化之后返回JSON格式的数据
  3,$.param()方法
  对数组或对象按照key=value&key=value进行序列化
九,jQuery中的全局事件
  加载ajax时触发ajaxStart函数,加载结束触发ajaxStop函数
  $("#loading").ajaxStart(function(){//显示加载中});
  $("#loading").ajaxStop(function(){//隐藏加载中});
  全局的,只要碰触ajax请求就会触发
  ajaxComplete(callback),请求完成时执行
  ajaxError(callback),请求发生错误时执行的函数,捕捉到的错误作为最后一个参数传递
  ajaxSend(callback),ajax请求发送前执行的函数
  ajaxSuccess(callback),ajax请求成功时执行的函数
  在global:true时才会触发全局事件

转载于:https://www.cnblogs.com/b0xiaoli/p/3678314.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值