欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jquery.ajax之beforeSend方法使用介绍

程序员文章站 2022-04-18 13:41:45
常见的一种效果,在用ajax请求时,没有返回前会出现前出现一个转动的loading小图标或者“内容加载中..”,用来告知用户正在请求数据。这个就可以用bef...

常见的一种效果,在用ajax请求时,没有返回前会出现前出现一个转动的loading小图标或者“内容加载中..”,用来告知用户正在请求数据。这个就可以用beforesend方法来实现。

代码如下:

 

代码如下:


function test_ajax(){
   $.ajax(
   {
      type:"get",//通常会用到两种:get,post。默认是:get
      url:"a.php",//(默认: 当前页地址) 发送请求的地址
      datatype:"html",//预期服务器返回的数据类型。
      beforesend:beforesend, //发送请求
      success:callback, //请求成功
      error:error,//请求出错
      complete:complete//请求完成
   });
}
function error(xmlhttprequest, textstatus, errorthrown){
  // 通常情况下textstatus和errorthown只有其中一个有值
  $("#showresult").append("<p>请求出错啦!</p>");
}
function beforesend(xmlhttprequest){
  $("#showresult").append("<p><img src='loading.gif' /><p>");
}
function complete(xmlhttprequest, textstatus){
  $("#showresult").remove();
}
function callback(msg){
  $("#showresult").append("<p>请求成功,回传数:"+msg+"<p>");
}

方法beforesend,用于在向服务器发送请求前添加一些处理函数。这是一个ajax事件,在ajax请求开始之前就被触发,通常允许用户修改xmlhttprequest对象(比如说设置附加的头部信息),关于ajax事件的解释可参考文档:https://docs.jquery.com/ajax_events

我们还见到一种情况,很多网站在加载内容的过程中给出“数据加载中,请稍候”的提示,当内容被加载完毕后显示内容。可以设置默认文本显示为加载中的提示,当内容加载完毕时,我们可以通过id选择器,将该标签中的文本替换成最终的内容。以此来取代beforesend,效率更高。

什么时候用beforesend,什么时候用文本替换,取决于ajax请求前后你所展示的dom元素是否一致,如果你所展示的dom元素在请求之前已经存在,那么通过上述文本替换的方式来处理会好些,如果除此以外你还需增加其他的需求,那么还是用beforesend来处理吧。