本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍.
本篇文章讲解如何使用jQuery方便快捷的实现Ajax功能.统一所有开发人员使用Ajax的方式.
二.前言
Ajax让用户页面丰富起来, 增强了用户体验. 使用Ajax是所有Web开发的必修课. 虽然Ajax技术并不复杂, 但是实现方式还是会因为每个开发人员的而有所差异.jQuery提供了一系列Ajax函数来帮助我们统一这种差异, 并且让调用Ajax更加简单.
三.原始Ajax与jQuery中的Ajax
首先通过实例, 来看一下jQuery实现Ajax有多简单. 下面是一个使用原始Ajax的示例:
<span class="kwrd"><!</SPAN><SPAN class=html>DOCTYPE</SPAN> <SPAN class=attr>html</SPAN> <SPAN class=attr>PUBLIC</SPAN> <SPAN class=kwrd>"-//W3C//DTD XHTML 1.0 Transitional//EN"</SPAN> <SPAN class=kwrd>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</SPAN><SPAN class=kwrd>></span> <span class="kwrd"><</SPAN><SPAN class=html>html</SPAN> <SPAN class=attr>xmlns</SPAN><SPAN class=kwrd>="http://www.w3.org/1999/xhtml"</SPAN><SPAN class=kwrd>></span> <span class="kwrd"><</SPAN><SPAN class=html>head</SPAN><SPAN class=kwrd>></span> <span class="kwrd"><</SPAN><SPAN class=html>title</SPAN><SPAN class=kwrd>></span>jQuery Ajax<span class="kwrd"></</SPAN><SPAN class=html>title</SPAN><SPAN class=kwrd>></span> <script type=<SPAN class=str>"text/javascript"</SPAN>> $(<span class="kwrd">function</span>() { <span class="kwrd">var</span> xhr = <span class="kwrd">new</span> AjaxXmlHttpRequest(); $(<span class="str">"#btnAjaxOld"</span>).click(<span class="kwrd">function</span>(<span class="kwrd">event</span>) { <span class="kwrd">var</span> xhr = <span class="kwrd">new</span> AjaxXmlHttpRequest(); xhr.onreadystatechange = <span class="kwrd">function</span>() { <span class="kwrd">if</span> (xhr.readyState == 4) { document.getElementById(<span class="str">"divResult"</span>).innerHTML = xhr.responseText; } } xhr.open(<span class="str">"GET"</span>, <span class="str">"data/AjaxGetCityInfo.aspx?resultType=html"</span>, <span class="kwrd">true</span>); xhr.send(<span class="kwrd">null</span>); }); }) <span class="rem">//跨浏览器获取XmlHttpRequest对象</span> <span class="kwrd">function</span> AjaxXmlHttpRequest() { <span class="kwrd">var</span> xmlHttp; <span class="kwrd">try</span> { <span class="rem">// Firefox, Opera 8.0+, Safari</span> xmlHttp = <span class="kwrd">new</span> XMLHttpRequest(); } <span class="kwrd">catch</span> (e) { <span class="rem">// Internet Explorer</span> <span class="kwrd">try</span> { xmlHttp = <span class="kwrd">new</span> ActiveXObject(<span class="str">"Msxml2.XMLHTTP"</span>); } <span class="kwrd">catch</span> (e) { <span class="kwrd">try</span> { xmlHttp = <span class="kwrd">new</span> ActiveXObject(<span class="str">"Microsoft.XMLHTTP"</span>); } <span class="kwrd">catch</span> (e) { alert(<span class="str">"您的浏览器不支持AJAX!"</span>); <span class="kwrd">return</span> <span class="kwrd">false</span>; } } } <span class="kwrd">return</span> xmlHttp; } <span class="kwrd"></</SPAN><SPAN class=html>script</SPAN><SPAN class=kwrd>></span> <span class="kwrd"></</SPAN><SPAN class=html>head</SPAN><SPAN class=kwrd>></span> <span class="kwrd"><</SPAN><SPAN class=html>body</SPAN><SPAN class=kwrd>></span> <span class="kwrd"><</SPAN><SPAN class=html>button</SPAN> <SPAN class=attr>id</SPAN><SPAN class=kwrd>="btnAjaxOld"</SPAN><SPAN class=kwrd>></span>原始Ajax调用<span class="kwrd"></</SPAN><SPAN class=html>button</SPAN><SPAN class=kwrd>><</SPAN><SPAN class=html>br</SPAN> <SPAN class=kwrd>/></span> <span class="kwrd"><</SPAN><SPAN class=html>br</SPAN> <SPAN class=kwrd>/></span> <span class="kwrd"><</SPAN><SPAN class=html>div</SPAN> <SPAN class=attr>id</SPAN><SPAN class=kwrd>="divResult"</SPAN><SPAN class=kwrd>></</SPAN><SPAN class=html>div</SPAN><SPAN class=kwrd>></span> <span class="kwrd"></</SPAN><SPAN class=html>body</SPAN><SPAN class=kwrd>></span> <span class="kwrd"></</SPAN><SPAN class=html>html</SPAN><SPAN class=kwrd>></span>
上面的实例中, data/AjaxGetCityInfo.aspx?resultType=html 地址会返回一段HTML代码.
使用原始Ajax, 我们需要做较多的事情, 比如创建XmlHttpRequest对象, 判断请求状态, 编写回调函数等.
而用jQuery的Load方法, 只需要一句话:
$(<span class="str">"#divResult"</span>).load(<span class="str">"data/AjaxGetCityInfo.aspx"</span>, { <span class="str">"resultType"</span>: <span class="str">"html"</span> });
曾经我是一个原始Ajax的绝对拥护者, 甚至摒弃微软的Asp.net Ajax, 因为我想要最高的代码灵活度. 使用原始Ajax让我感觉完成自己的工作更加轻松, 即使多写了一些代码. 但是当我去翻看别人的Ajax代码并且尝试修改的时候, 我改变了我的看法--我们的代码到处分布着创建XmlHttpRequest方法的函数, 或者某些Ajax程序逻辑性和结构性很差, 很难看懂.
我们可以将通用方法放到一个js文件中, 然后告诉大家"嘿伙伴们, 都来用这个js中的方法". 但是在某些时候有些新来的外包人员并不知道有这个js文件的存在. 而且其实这个通用的js就是一个公共的脚本类库, 我相信没有人会觉得自己开发一个类库会比jQuery更好!
所以我放弃了制造轮子的计划, 大家都使用jQuery编写Ajax相关的方法就可以解决各种差异性问题, 并且让工作更有效率.
现在只是用jQuery的Ajax函数, 我的页面变得简洁了:
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery Ajaxtitle>
<script type="text/javascript" src="scripts/jquery-1.3.2-vsdoc2.js">script>
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31
最新の問題
ブックマークを介して純粋な CSS で要素を作成しました。作成されたが表示されない
私のコードは次のとおりです: g=document.createElement('div');g.setAttribute("id","divcont...
から 2024-04-04 17:27:27
0
1
417
Safari/Firefox iOS でフォームデータを送信できない
これは、iOS 上の Safari/Firefox を除くすべてのプラットフォームで動作します: jQuery("#gform_1").one('submit'...
から 2024-04-04 12:53:48
0
1
303