<p>常见的一种效果,在用ajax请求时,没有返回前会出现前出现一个转动的loading小图标或者&quot;内容加载中..&quot;,用来告知用户正在请求数据。这个就可以用beforeSend方法来实现。</p><pre class="brush:js;toolbar:false">functiontest_ajax(){ $.ajax( { type:&quot;GET&quot;,//通常会用到两种:GET,POST。默认是:GET url:&quot;a.php&quot;,//(默认:当前页地址)发送请求的地址 dataType:&quot;html&quot;,//预期服务器返回的数据类型。 beforeSend:beforeSend,//发送请求 success:callback,//请求成功 error:error,//请求出错 complete:complete//请求完成 }); } functionerror(XMLHttpRequest,textStatus,errorThrown){ //通常情况下textStatus和errorThown只有其中一个有值 $(&quot;#showResult&quot;).append(&quot;&lt;div&gt;请求出错啦!&lt;/div&gt;&quot;); } functionbeforeSend(XMLHttpRequest){ $(&quot;#showResult&quot;).append(&quot;&lt;div&gt;&lt;imgsrc=&#39;loading.gif&#39;/&gt;&lt;div&gt;&quot;); } functioncomplete(XMLHttpRequest,textStatus){ $(&quot;#showResult&quot;).remove(); } functioncallback(msg){ $(&quot;#showResult&quot;).append(&quot;&lt;div&gt;请求成功,回传数:&quot;+msg+&quot;&lt;div&gt;&quot;); }</pre><p>方法beforeSend,用于在向服务器发送请求前添加一些处理函数。这是一个ajax事件,在ajax请求开始之前就被触发,通常允许用户修改XMLHttpRequest对象(比如说设置附加的头部信息),关于ajax事件的解释可参考文档:http://docs.jquery.com/Ajax_Events</p><p>我们还见到一种情况,很多网站在加载内容的过程中给出&quot;数据加载中,请稍候&quot;的提示,当内容被加载完毕后显示内容。可以设置默认文本显示为加载中的提示,当内容加载完毕时,我们可以通过ID选择器,将该标签中的文本替换成最终的内容。以此来取代beforeSend,效率更高。</p><p>什么时候用beforeSend,什么时候用文本替换,取决于ajax请求前后你所展示的DOM元素是否一致,如果你所展示的DOM元素在请求之前已经存在,那么通过上述文本替换的方式来处理会好些,如果除此以外你还需增加其他的需求,那么还是用beforeSend来处理吧。</p>
返回顶部 留言