??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美亚洲在线,尤物在线网址,日韩精品99http://www.aygfsteel.com/wangxinsh55/category/9540.htmlzh-cnMon, 25 Jun 2007 10:33:23 GMTMon, 25 Jun 2007 10:33:23 GMT60jQuery ?prototype 共存http://www.aygfsteel.com/wangxinsh55/archive/2007/06/25/126168.htmlSIMONESIMONEMon, 25 Jun 2007 09:48:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2007/06/25/126168.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/126168.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2007/06/25/126168.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/126168.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/126168.htmlҎ一Q?/p>
<html>  
 <head> 
   <script src="prototype.js"></script> 
   <script src="jquery.js"></script> 
   <script> 
     jQuery.noConflict();  
       
     // Use jQuery via jQuery(...)  
     jQuery(document).ready(function(){  
       jQuery("div").hide();  
     });  
       
     // Use Prototype with $(...), etc.  
     $('someid').style.display = 'none';  
   </script> 
 </head> 
 <body></body> 
 </html>

Ҏ二:

<html>  
 <head> 
   <script src="prototype.js"></script> 
   <script src="jquery.js"></script> 
   <script> 
     var $j = jQuery.noConflict();  
       
     // Use jQuery via $j(...)  
     $j(document).ready(function(){  
       $j("div").hide();  
     });  
       
     // Use Prototype with $(...), etc.  
     $('someid').style.display = 'none';  
   </script> 
 </head> 
 <body></body> 
 </html> 

Ҏ三:

<html>  
 <head> 
   <script src="prototype.js"></script> 
   <script src="jquery.js"></script> 
   <script> 
     jQuery.noConflict();  
       
     // Put all your code in your document ready area  
     jQuery(document).ready(function($){  
       // Do jQuery stuff using $  
       $("div").hide();  
     });  
       
     // Use Prototype with $(...), etc.  
     $('someid').style.display = 'none';  
   </script> 
 </head> 
 <body></body> 
 </html> 



SIMONE 2007-06-25 17:48 发表评论
]]>
推荐--jQuery使用手册 http://www.aygfsteel.com/wangxinsh55/archive/2007/06/25/126166.htmlSIMONESIMONEMon, 25 Jun 2007 09:36:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2007/06/25/126166.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/126166.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2007/06/25/126166.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/126166.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/126166.html阅读全文

SIMONE 2007-06-25 17:36 发表评论
]]>
jQuery中文入门指南Q翻译加实例QjQuery的vҎE?/title><link>http://www.aygfsteel.com/wangxinsh55/archive/2007/06/25/126164.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Mon, 25 Jun 2007 09:34:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangxinsh55/archive/2007/06/25/126164.html</guid><wfw:comment>http://www.aygfsteel.com/wangxinsh55/comments/126164.html</wfw:comment><comments>http://www.aygfsteel.com/wangxinsh55/archive/2007/06/25/126164.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangxinsh55/comments/commentRss/126164.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangxinsh55/services/trackbacks/126164.html</trackback:ping><description><![CDATA[<h1>jQuery中文入门指南Q翻译加实例QjQuery的vҎE?/h1> <div> <h3>中文版译者:<a >Keel</a></h3> <p>此文以实例ؓ基础一步步说明了jQuery的工作方式。现以中文翻译(d我的补充说明Q如下。如有相x见或请麻烦到我的 <a >BLOG</a> 写个回复或?<a href="mailto:keel.sike%28at%29gmail.com">EMAIL</a> 告知?/p> <p>英文原版Q?a >http://jquery.bassistance.de/jquery-getting-started.html</a> Q感谢原文作?<a >Jörn Zaefferer</a></p> <p><strong>本文发布已征求原作者同意?/strong> </p> <p>另外我认为在学习q程?有两个API文档你要打开随时查看:</p> <ul> <li><a >http://jquery.com/api/</a> <li><a >http://visualjquery.com/</a></li> </ul> </div> <h4>以下部分为原文翻?</h4> <hr> <div> <h2>jQuery入门指南教程</h2> <p>q个指南是一个对jQuery库的说明Q要求读者了解HTML(DOM)和CSS的一些常识。它包括了一个简单的Hello World的例子,选择器和事g基础QAJAX、FX的用法,以及如何制作jQuery的插件?q个指南包括了很多代码,你可以copy它们Qƈ试着修改它们Q看看生的效果?</p> <h2>内容提要</h2> <ol> <li><a >安装</a> <li><a >Hello jQuery</a> <li><a >Find me:使用选择器和事g</a> <li><a >Rate me:使用AJAX</a> <li><a >Animate me(让我生动h):使用FX</a> <li><a >Sort me(我有序?:使用tablesorter插g(表格排序)</a> <li><a >Plug me:制作您自q插g</a> <li><a >Next steps(下一?</a></li> </ol> </div> <div> <h2 id=setup>安装</h2> <p>一开?我们需要一个jQuery的库,最新的下蝲可以?a >q里</a>扑ֈ。这个指南提供一个基本包含实例的包供下蝲.</p> <p>下蝲Q?a class=download >jQuery Starterkit</a></p> <p class=log>(译者Keel?一定要下蝲q个包,光看文章不实践肯定是不行的? </p> <p class=instruction>下蝲后解压羃Q然后用你最喜欢的文本编辑器打开starterkit.html和custom.jsq两个文件?span class=log>(译者Keel?q两个就是例子文?所有的例子都用q两个例子作?custom.js写jQuery代码,starterkit.html观察效果.用editPlus打开) </span></p> <p>现在,我们已l做好了一切准备来q行q个著名?Hello world"例子.</p> <h4>本章的相关链?</h4> <ul> <li><a >Starterkit</a> <li><a >jQuery Downloads</a></li> </ul> </div> <div> <h2 id=hello>Hello jQuery</h2> <p>在做所有事情之?我们要让jQueryd和处理文档的DOM,必须可能快地在DOM载入后开始执行事?所?我们用一个ready事g作ؓ处理HTML文档的开?看看我们打开的custom.jsq个文g,里面已经准备好了:</p> <pre>$(document).ready(function() {<br> // do stuff when DOM is ready<br>});</pre> <p>放一个简单的alert事g在需要等DOM完成载入,所以我们把dE稍变复杂一?在点MQ何一个链接时昄一个alert.</p> <pre>$(document).ready(function() {<br> $("a").click(function() {<br> alert("Hello world!");<br> });<br>});</pre> <p>q样在你点击面的一个链接时都会触发q个"Hello world"的提C?/p> <p class=log>(译者Keel?L此代码修改custom.jsq保?然后用浏览器打开starterkit.html观察效果?</p> <p>让我们看一下这些修Ҏ什么含义?("a") 是一个jQuery选择?selector),在这里,它选择所有的a标签<span id="wmqeeuq" class=log>Q译者Keel注:?lt;a></a>Q?/span>Q? h jQuery “c?#8221;(jQuery "class")的一个别Uͼ因此$()构造了一个新的jQuery 对象(jQuery object)。函?click() 是这个jQuery对象的一个方法,它绑定了一个单M件到所有选中的标{?q里是所有的a标签),q在事g触发时执行了它所提供的alertҎ.</p> <p>q里有一个拟行相似功能的代码:</p> <pre><a href="#" onclick="alert('Hello world')">Link</a></pre> <p>不同之处很明?用jQuery不需要在每个a标签上写onclick事g,所以我们拥有了一个整z的l构文(HTML)和一个行为文?JS),辑ֈ了将l构与行为分开的目?像我们使用CSSq求的一?</p> <p>下面我们会更多地了解到选择器与事g.</p> <h4>本章的相关链?</h4> <ul> <li><a >jQuery Base</a> <li><a >jQuery Expressions</a> <li><a >jQuery Basic Events</a></li> </ul> </div> <div> <h2 id=find>Find me:使用选择器和事g</h2> <p>jQuery提供两种方式来选择html?elementsQ第一U是用CSS和Xpath选择器联合v来Ş成一个字W串来传送到jQuery的构造器Q如Q?("div > ul a")Q;W二U是用jQuery对象的几个methods(Ҏ)。这两种方式q可以联合v来؜合用?/p> <p>Z试一下这些选择器,我们来试着在我们starterkit.html中选择q修改第一个ordered list.</p> <p>一开始,我们需要选择q个list本nQ这个list有一个ID?#8220;orderedlist”Q通常的javascript写法是document.getElementById("orderedlist").在jQuery中,我们q样做:</p> <pre>$(document).ready(function() {<br> $("#orderedlist").addClass("red");<br>});</pre> <p>q里starterkit中的一个CSS样式red附加Corderedlist?span class=log>(译者Keel注:参考测试包中的css目录下的core.cssQ其中定义了red样式)</span>。因此,在你h了starterkit.html后,你将会看到第一个有序列?ordered list )背景色变成了U色Q而第二个有序列表没有变化.</p> <p>现在Q让我们d一些新的样式到list的子节点.</p> <pre>$(document).ready(function() {<br> $("#orderedlist > li").addClass("blue");<br>});</pre> <p>q样Q所有orderedlist中的li都附加了样式"blue"?/p> <p>现在我们再做个复杂一点的Q当把鼠标放在li对象上面和移开时进行样式切换,但只在list的最后一个element上生效?/p> <pre>$(document).ready(function() {<br> $("#orderedlist li:last").hover(function() {<br> $(this).addClass("green");<br> }, function() {<br> $(this).removeClass("green");<br> });<br>});</pre> <p>q有大量的类似的<a class=doc title="Documentation for CSS selectors" >CSS</a>?a class=doc title="Documentation for XPath selectors" >XPath</a>例子Q更多的例子和列表可以在<a class=doc title="Documentation for base selectors" >q里</a>扑ֈ?span class=log>Q译者Keel注:入门看此文,修行在个人,要想在入门之后懂更多Q所以这D话的几个链接迟早是要必看的Q不会又要翻译吧...^_^!Q?/span></p> <p>每一个onXXX事g都有效,如onclick,onchange,onsubmit{,都有jQuery{h表示Ҏ<span id="wmqeeuq" class=log>Q译者Keel注:jQuery不喜ƢonXXXQ所以都Ҏ了XXXQ去掉了onQ?/span>?a class=doc title="Documentation for advanced events" >其他的一些事?/a>Q如ready和hover,也提供了相应的方法?/p> <p>你可以在<a >Visual jQuery</a>扑ֈ全部的事件列表,在Events栏目?</p> <p>用这些选择器和事g你已l可以做很多的事情了Q但q里有一个更强的好东东!</p> <pre>$(document).ready(function() {<br> $("#orderedlist").find("li").each(function(i) {<br> $(this).html( $(this).html() + " BAM! " + i );<br> });<br>});</pre> <p>find() 让你在已l选择的element中作条g查找,因此 $("#orderedlist).find("li") 像 $("#orderedlist li"). each()一栯P代了所有的liQƈ可以在此基础上作更多的处理?大部分的Ҏ,如addClass(), 都可以用它们自己?each() 。在q个例子? html()用来获取每个li的html文本, q加一些文字,q将之设|ؓli的html文本?span class=log>Q译者Keel注:从这个例子可以看?html()Ҏ是获取对象的html代码Q?html('xxx')是设|?xxx'为对象的html代码Q?/span></p> <p>另一个经常碰到的d是在没有被jQuery覆盖的DOM元素上call一些方法,惛_一个在你用AJAX方式成功提交后的resetQ?/p> <pre>$(document).ready(function() {<br> // use this to reset a single form<br> $("#reset").click(function() {<br> $("#form")[0].reset();<br> });<br>});</pre> <p class=log>Q译者Keel注:q里作者将form的id也写成了formQ源文g?lt;form id="form">Q这是非怸好的写法Q你可以这个IDҎform1或者testFormQ然后用$("#form1")或? ("#testForm")来表C它Q再q行试。)</p> <p>q个代码选择了所有ID?form"的元素,q在其第一个上call了一个reset()。如果你有一个以上的formQ你可以q样做:</p> <pre>$(document).ready(function() {<br> // use this to reset several forms at once<br> $("#reset").click(function() {<br> $("form").each(function() {<br> this.reset();<br> });<br> });<br>});</pre> <p class=log>Q译者Keel注:h意一定要亲自这些代码写在custom.js中ƈ在starterkit.html上测试效果才能有所体会Q必要时要观察starterkit.html的html代码Q?/p> <p>q样你在点击Reset链接后,选择了文中所有的form元素Qƈ对它们都执行了一ơreset()?/p> <p>q?有一个你可能要面对的问题是不希望某些特定的元素被选择。jQuery 提供了filter() 和not() Ҏ来解册个问题?filter()以过滤表辑ּ来减不W合的被选择? not()则用来取消所有符合过滤表辑ּ的被选择? 考虑一个无序的listQ你惌选择所有的没有ul子元素的li元素?/p> <pre>$(document).ready(function() {<br> $("li").not("[ul]").css("border", "1px solid black");<br>});</pre> <p>q个代码选择了所有的li元素Q然后去除了没有ul子元素的li元素。刷新浏览器后,所有的li元素都有了一个边框,只有ul子元素的那个li元素例外?/p> <p class=log>Q译 者Keel注:h意体会方便之极的css()ҎQƈ再次提醒请务必实际测试观察效果,比方说换个CSS样式呢?再加一个CSS样式呢?像这P$ ("li").not("[ul]").css("border", "1px solid black").css("color","red");Q?/p> <p>上面代码中的[expression] 语法是从XPath而来Q可以在子元素和属?elements and attributes)上用作过滤器Q比如你可能想选择所有的带有name属性的链接:</p> <pre>$(document).ready(function() {<br> $("a[@name]").background("#eee");<br>});</pre> <p>q个代码l所有带有name属性的链接加了一个背景色?span class=log>Q译者Keel注:q个颜色太不明显了,写成$("a[@name]").background("red");Q?/span></p> <p>更常见的情况是以name来选择链接Q你可能需要选择一个有特点href属性的链接Q这在不同的览器下对href的理解可能会不一_所以我们的部分匚w("*=")的方式来代替完全匚w("=")Q?/p> <pre>$(document).ready(function() {<br> $("a[@href*=/content/gallery]").click(function() {<br> // do something with all links that point somewhere to /content/gallery<br> });<br>});</pre> <p>到现在ؓ止,选择器都用来选择子元素或者是qo元素。另外还有一U情冉|选择上一个或者下一个元素,比如一个FAQ的页面,{案首先会隐藏,当问题点LQ答案显C出来,jQuery代码如下Q?/p> <pre>$(document).ready(function() {<br> $('#faq').find('dd').hide().end().find('dt').click(function() {<br> var answer = $(this).next();<br> if (answer.is(':visible')) {<br> answer.slideUp();<br> } else {<br> answer.slideDown();<br> }<br> });<br>});</pre> <p>q?里我们用了一些链式表达法来减代码量Q而且看上L直观更容易理解。像'#faq' 只选择了一ơ,利用end()ҎQ第一ơfind()Ҏ会结?undone)Q所以我们可以接着在后面lfind('dt')Q而不需要再? ('#faq').find('dt')?/p> <p>在点M件中的,我们?$(this).next() 来找到dt下面紧接的一个dd元素Q这让我们可以快速地选择在被点击问题下面的答案?/p> <p class=log>Q译 者Keel注:q个例子真是太酷了,FAQ中的{案可以收羃Q从利用next()的思\到实现这些效果都有很多地斚w要我们消化,注意 if (answer.is(':visible'))用法Q注意answer.slideUp();不懂的地方赶紧查我在最开始提到的两个必看API文档Q?/p> <p>除了选择同别的元素外,你也可以选择父的元素。可能你惛_用户鼠标Ud文章某段的某个链接时Q它的父U元?-也就是文章的q一D늪出显C,试试q个Q?/p> <pre>$(document).ready(function() {<br> $("a").hover(function() {<br> $(this).parents("p").addClass("highlight");<br> }, function() {<br> $(this).parents("p").removeClass("highlight");<br> });<br>});</pre> <p>试效果可以看到Q移到文章某D늚链接Ӟ它所在的D全用上highlight样式Q移C后又恢复原样?/p> <span id="wmqeeuq" class=log>Q译者Keel注:highlight是core.css中定义的样式Q你也可以改变它Q注意这里有W二个function()q是hoverҎ的特点,请在API文中查阅hoverQ上面也有例子说明)</span> <p>在我们l之前我们先来看看这一步: jQuery会让代码变得更短从而更Ҏ理解和维护,下面?(document).ready(callback)的羃写法Q?/p> <pre>$(function() {<br> // code to execute when the DOM is ready<br>});</pre> <p>应用到我们的Hello world例子中,可以q样:</p> <pre>$(function() {<br> $("a").click(function() {<br> alert("Hello world!");<br> });<br>});</pre> <p>现在Q我们手上有了这些基的知识,我们可以更进一步的探烦其它斚w的东西,׃AJAX开始!</p> <h4>本章的相关链?</h4> <ul> <li><a >jQuery API documentation</a> <li><a >Visual jQuery - A categorized browsable API documentation</a> <li><a >jQuery Expressions: CSS</a> <li><a >jQuery Expressions: XPath</a> <li><a >jQuery Expressions: Custom</a> <li><a >jQuery Special Events</a> <li><a >jQuery DOM Traversing</a></li> </ul> </div> <div> <h2 id=rate>Rate me:使用AJAX</h2> <p>在这一部分我们写了一个小的AJAX应用Q它能够rate一些东?span class=log>Q译Keel注:是Ҏ些东西投)</span>Q就像在youtube.com上面看到的一栗?/p> <p>首先我们需要一些服务器端代码,q个例子中用C一个PHP文gQ读取rating参数然后q回ratingL和^均数。看一?a >rate.php</a>代码.</p> <p>虽然q些例子也可以不使用AJAX来实玎ͼ但显C我们不会那么做Q我们用jQuery生成一个DIV容器QID?rating".</p> <pre>$(document).ready(function() {<br> // generate markup<br> var ratingMarkup = ["Please rate: "];<br> for(var i=1; i <= 5; i++) {<br> ratingMarkup[ratingMarkup.length] = "<a href='#'>" + i + "</a> ";<br> }<br> // add markup to container and applier click handlers to anchors<br> $("#rating").append( ratingMarkup.join('') ).find("a").click(function(e) {<br> e.preventDefault();<br> // send requests<br> $.post("rate.php", {rating: $(this).html()}, function(xml) {<br> // format result<br> var result = [<br> "Thanks for rating, current average: ",<br> $("average", xml).text(),<br> ", number of votes: ",<br> $("count", xml).text()<br> ];<br> // output result<br> $("#rating").html(result.join(''));<br> } );<br> });<br>});</pre> <p>q段代码生成?个链接,q将它们q加到id?rating"容器中,当其中一个链接被点击Ӟ该链接标明的分数׃以rating参数形式发送到rate.phpQ然后,l果以XML形式会从服务器端传回来,d到容器中Q替代这些链接?/p> <p>如果你没有一个安装过PHP的webserverQ你可以看看q个<a >在线的例?/a>.</p> <p>不用javascript实现的例子可以访?<a >softonic.de</a> 点击 "Kurz bewerten!"</p> <p>更多的AJAXҎ可以?a class=doc title="Documentation for AJAX methods" >q里</a> 扑ֈQ或者看?a >API文</a> 下面的AJAX filed under AJAX.</p> <p class=log>Q译者Keel注:q个在线实例从国内访问还是比较慢的,点击后要{一会儿才能看到l果Q可以考虑对它q行修改Q比如加上loadingQ投后加上再投的q回链接{。此外,q个例子中还是有很多需要进一步消化的地方Q看不懂的地方请参考API文。)</p> <p>一个在使用AJAX载入内容时经常发生的问题是:当蝲入一个事件句柄到一个HTML文Ӟq需要在载入内容上应用这些事Ӟ你不得不在内容加载完成后应用q些事g句柄Qؓ了防止代码重复执行,你可能用到如下一个function:</p> <pre>// lets use the shortcut<br>$(function() {<br> var addClickHandlers = function() {<br> $("a.clickMeToLoadContent").click(function() {<br> $("#target").load(this.href, addClickHandlers);<br> });<br> };<br> addClickHandlers();<br>});</pre> <p>现在QaddClickHandlers只在DOM载入完成后执行一ơ,q是在用hơ点d有clickMeToLoadContent q个样式的链接ƈ且内容加载完成后.</p> <p>h意addClickHandlers函数是作Z个局部变量定义的Q而不是全局变量(如:function addClickHandlers() {...})Q这样做是ؓ了防止与其他的全局变量或者函数相冲突.</p> <p>另一个常见的问题是关于回?callback)的参数。你可以通过一个额外的参数指定回调的方法,单的办法是将q个回调Ҏ包含在一个其它的function?</p> <pre>// get some data<br>var foobar = ...;<br>// specify handler, it needs data as a paramter<br>var handler = function(data) {<br> ...<br>};<br>// add click handler and pass foobar!<br>$('a').click( function(event) { handler(foobar); } );<br><br>// if you need the context of the original handler, use apply:<br>$('a').click( function(event) { handler.apply(this, [foobar]); } );</pre> <p>用到单的AJAX后,我们可以认ؓ已经非常?#8220;web2.0”了,但是到现在ؓ止,我们q缺一些酷炫的效果。下一节将会谈到这些效?</p> <h4>本章的相关链?</h4> <ul> <li><a >jQuery AJAX Module</a> <li><a >jQuery API: Contains description and examples for append and all other jQuery methods</a> <li><a >ThickBox: A jQuery plugin that uses jQuery to enhance the famous lightbox</a></li> </ul> </div> <div> <h2 id=animate>Animate me(让我生动h):使用FX</h2> <p>一些动态的效果可以使用 <code>show()</code> ?<code>hide()</code>来表?</p> <pre>$(document).ready(function() {<br> $("a").toggle(function() {<br> $(".stuff").hide('slow');<br> }, function() {<br> $(".stuff").show('fast');<br> });<br>});</pre> <p>你可以与 <code>animate()</code>联合h创徏一些效?如一个带渐显的滑动效?</p> <pre>$(document).ready(function() {<br> $("a").toggle(function() {<br> $(".stuff").animate({<br> height: 'hide',<br> opacity: 'hide'<br> }, 'slow');<br> }, function() {<br> $(".stuff").animate({<br> height: 'show',<br> opacity: 'show'<br> }, 'slow');<br> });<br>});</pre> <p>很多不错的效果可以访?a >interface plugin collection</a>. q个站点提供了很多demos和文?/p> <p>q些效果插g是位于jQuery插g列表的前面的Q当然也有很多其他的插gQ比如我们下一章讲到的表格排序插g?/p> <h4>本章的相关链?</h4> <ul> <li><a >jQuery FX Module</a> <li><a >Interface plugin</a></li> </ul> </div> <div> <h2 id=sort>Sort me(我有序?:使用tablesorter插g(表格排序)</h2> <p>q个表格排序插g能让我们在客L按某一列进行排序,引入jQuery和这个插件的js文gQ然后告诉插件你惌哪个表格拥有排序功能?/p> <p>要测试这个例子,先在starterkit.html中加上像下面q一行的代码Q?/p> <pre><script src="lib/jquery.tablesorter.js" type="text/javascript"></script></pre> <p>然后可以q样调用不着:</p> <pre>$(document).ready(function() {<br> $("#large").tableSorter();<br>});</pre> <p>现在点击表格的第一行head区域Q你可以看到排序的效果,再次点击会按倒过来的序q行排列?/p> <p>q个表格q可以加一些突出显C的效果Q我们可以做q样一个隔行背景色Q斑马线Q效?</p> <pre>$(document).ready(function() {<br> $("#large").tableSorter({<br> stripingRowClass: ['odd','even'], // Class names for striping supplyed as a array.<br> stripRowsOnStartUp: true // Strip rows on tableSorter init.<br> });<br>});</pre> <p>关于q个插g的更多例子和文可以?<a >tablesorter首页</a>扑ֈ.</p> <p>几乎所有的特g都是q样用的:先include插g的js文g,然后在某些元素上使用插g定义的方?当然也有一些参数选项是可以配|的</p> <p>l常更新的插件列表可以从jQuery官方?<a title="Plugins for jQuery" >on the jQuery site</a>扑ֈ.</p> <p>当你更经常地使用jQuery?你会发现你自己的代码打包成插g是很有用处的,它能方便地让你的公司或者其他hq行重用.下一章我们将谈到如何构徏一个自q插g.</p> <h4>本章的相关链?</h4> <ul> <li><a >Plugins for jQuery</a> <li><a >Tablesorter Plugin</a></li> </ul> </div> <div> <h2 id=plug>Plug me:制作自己的插?/h2> <p>写一个自qjQuery插g是非常容易的,如果你按照下面的原则来做,可以让其他h也容易地l合使用你的插g.</p> <ol> <li>Z的插件取一个名?在这个例子里面我们叫?foobar". <li>创徏一个像q样的文?jquery.[yourpluginname].js,比如我们创徏一个jquery.foobar.js <li>创徏一个或更多的插件方?使用l承jQuery对象的方?? <pre>jQuery.fn.foobar = function() {<br> // do something<br>};</pre> <li>可选的:创徏一个用于帮助说明的函数,? <pre>jQuery.fooBar = {<br> height: 5,<br> calculateBar = function() { ... },<br> checkDependencies = function() { ... }<br>};</pre> <p>你现在可以在你的插g中用这些帮助函C:</p> <pre>jQuery.fn.foobar = function() {<br> // do something<br> jQuery.foobar.checkDependencies(value);<br> // do something else<br>};</pre> <li>可选的l:创徏一个默认的初始参数配置,q些配置也可以由用户自行讑֮,? <pre>jQuery.fn.foobar = function(options) {<br> var settings = {<br> value: 5,<br> name: "pete",<br> bar: 655<br> };<br> if(options) {<br> jQuery.extend(settings, options);<br> }<br>};</pre> <p>现在可以无需做Q何配|地使用插g?默认的参数在此时生效:</p> <pre>$("...").foobar();</pre> <p>或者加入这些参数定?</p> <pre>$("...").foobar({<br> value: 123,<br> bar: 9<br>});</pre> </li> </ol> <p>如果你release你的插g, 你还应该提供一些例子和文,大部分的插g都具备这些良好的参考文?</p> <p>现在你应该有了写一个插件的基础,让我们试着用这些知识写一个自q插g.</p> <p>很多着控制所有的radio或者checkbox是否被选中,比如:</p> <pre>$("input[@type='checkbox']").each(function() {<br> this.checked = true;<br> // or, to uncheck<br> this.checked = false;<br> // or, to toggle<br> this.checked = !this.checked;<br>});</pre> <p>无论何时候,当你的代码出现eachӞ你应该重写上面的代码来构造一个插?很直接地:</p> <pre>$.fn.check = function() {<br> return this.each(function() {<br> this.checked = true;<br> });<br>};</pre> <p>q个插g现在可以q样?</p> <pre>$("input[@type='checkbox']").check();</pre> <p>现在你应该还可以写出uncheck()和toggleCheck()?但是先停一?让我们的插g接收一些参?</p> <pre>$.fn.check = function(mode) {<br> var mode = mode || 'on'; // if mode is undefined, use 'on' as default<br> return this.each(function() {<br> switch(mode) {<br> case 'on':<br> this.checked = true;<br> break;<br> case 'off':<br> this.checked = false;<br> break;<br> case 'toggle':<br> this.checked = !this.checked;<br> break;<br> }<br> });<br>};</pre> <p>q里我们讄了默认的参数,所以将"on"参数省略也是可以?当然也可以加?on","off", ?"toggle",?</p> <pre>$("input[@type='checkbox']").check();<br>$("input[@type='checkbox']").check('on');<br>$("input[@type='checkbox']").check('off');<br>$("input[@type='checkbox']").check('toggle');</pre> <p>如果有多于一个的参数讄会稍E有点复?在用时如果只想讄W二个参?则要在第一个参C|写入null.</p> <p>从上一章的tablesorter插g用法我们可以看到,既可以省略所有参数来使用或者通过一?key/value Ҏ重新讄每个参数.</p> <p>作ؓ一个练?你可以试着?<a >W四?/a> 的功能重写ؓ一个插?q个插g的骨架应该是像这L:</p> <pre>$.fn.rateMe = function(options) {<br> var container = this; // instead of selecting a static container with $("#rating"), we now use the jQuery context<br> <br> var settings = {<br> url: "rate.php"<br> // put more defaults here<br> // remember to put a comma (",") after each pair, but not after the last one!<br> };<br> <br> if(options) { // check if options are present before extending the settings<br> $.extend(settings, options);<br> }<br> <br> // ...<br> // rest of the code<br> // ...<br> <br> return this; // if possible, return "this" to not break the chain<br>});</pre> </div> <div> <h2 id=next>Next steps(下一?</h2> <p>如果你想做更好的javascript开?你用一个叫 <a >FireBug</a>的firefox插g. 它提供了断点调试(比alert强多?、观察DOM变化{很多漂亮的功能</p> <p>如果你还有未解决的问题,或者新的想法与Q你可以使用jQuery的邮件列?<a >jQuery mailing list</a>.</p> <p>关于q个指南的Q何事情,你可以写<a href="mailto:enchos%20%5Bat%5D%20gmx%20%5Bdot%5D%20net">mail</a>l作者或者发表评论在他的日志Q?a >blog</a>.</p> <p class=log>关于q个指南的翻译Q何事情,你可以写<a href="mailto:keel.sike%5Bat%5D%20gmail.com">mail</a>l我或者发表评论在我的日志Q?a >blog</a>.</p> </div> <div> <h3>q有什?..</h3> <p>大大感谢John Resig创造了q么好的library! 感谢jQuery community 为John提供了如此多的咖啡和其他的一?</p> </div> <h4><a >© 2006, Jörn Zaefferer</a> - last update: 2006-09-12</h4> <h4>中文版翻?<a >Keel</a> - 最后更? 2006-12-13</h4> <script src="http://www.google-analytics.com/urchin.js" type=text/javascript></script> <script type=text/javascript>_uacct = "UA-333331-1";urchinTracker();</script> <img src ="http://www.aygfsteel.com/wangxinsh55/aggbug/126164.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangxinsh55/" target="_blank">SIMONE</a> 2007-06-25 17:34 <a href="http://www.aygfsteel.com/wangxinsh55/archive/2007/06/25/126164.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax~存问题http://www.aygfsteel.com/wangxinsh55/archive/2007/02/08/98642.htmlSIMONESIMONEThu, 08 Feb 2007 01:15:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2007/02/08/98642.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/98642.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2007/02/08/98642.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/98642.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/98642.html使用Ajax中遇到的一个问题,手动h面Ӟ没有提交到后台处理,LC第一ơ蝲入的数据?br />头已加入防~存讄Q?br /><meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
可结果依旧?br />baidu了一下,扑ֈ相关资料?br />解决ҎQ让提交的URL每次都向服务器端发送请求,而不是用缓存?br />Ҏ一Q加旉?var url = BaseURL + "&timeStamp=" + new Date().getTime();
Ҏ二:加随机数 var url = BaseURL + "&r=" + Math.random();
Ҏ三:自已惟뀂。?/p>

SIMONE 2007-02-08 09:15 发表评论
]]>
无尽的Q?JSON http://www.aygfsteel.com/wangxinsh55/archive/2007/01/04/91708.htmlSIMONESIMONEThu, 04 Jan 2007 03:03:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2007/01/04/91708.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/91708.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2007/01/04/91708.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/91708.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/91708.html技术饭q真是不好吃,今天Z搞定gq个N,选择了Ajax.在看Ajax的时候看CJson.q个东西看着不错,好吧,上网去down个用.

打开|站开始寻找我的目?发现q个东西居然有好多版?比如

  • JSON in ActionScript:
  • JSON in C.
  • JSON in C++:
  • JSON in C#:
  • JSON in Cold Fusion.
  • JSON in Delphi.
  • JSON in E.
  • JSON in Erlang.
  • JSON in Java:
  • JSON in JavaScript.
  • JSON in Lisp:
  • JSON in Lua.
  • JSON in ML and Ruby.
  • JSON in Objective C.
  • JSON in Objective CAML.
  • JSON in OpenLaszlo.
  • JSON in Perl.
  • JSON in PHP:
  • JSON in Python.
  • JSON in Rebol.
  • JSON in Ruby.
  • JSON in Squeak.

    说实?看到q些玩意,心里面顿时是凉了半截.

    好多名词!!!

    .看着q些东西感觉自己特别无知.q好大多脸熟,心里面的虚荣心还没有跌倒低?

    点击一个链?比现在多一倍的新链接出现在眼前,每一个链接代表一个知识点.面呈现的一瞬间理智立刻崩溃?只是一个名不见l传的json有如此之多的知?那么其他?......面对无穷无尽的知识vz?不由理解了知识是学不完这句话.

    在知识爆炸的今天,也许只有"现用现学"是解册U情늚最好办?

    可是面对q些东西,开始觉得那?"现用现学"是多么恐怖的一U境?q种东西现学了能马上会用,用不是问?问题是用q些C西还能算出工E进?q能~出可以l护的代?如果再能保证代码的健壮??.......

    q里不由惛_另一个问?Z么现用现学还能用?如果是全新的东西,快速的学习肯定仙也做不了.所以看h全新的知识应该有相应的共通点.

    是不是因为面向对象的思想?个h猜测,可能性比较大,因ؓ一旦变成对象了,可以不他们的实现方式,一律归到已有的面向对象的思\中来,无非是多了几个新元素要记而已.要是q样,真应该感谢面向对?




  • SIMONE 2007-01-04 11:03 发表评论
    ]]>
    关于W3C DOM http://www.aygfsteel.com/wangxinsh55/archive/2006/12/31/91199.htmlSIMONESIMONESun, 31 Dec 2006 08:59:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2006/12/31/91199.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/91199.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2006/12/31/91199.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/91199.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/91199.html阅读全文

    SIMONE 2006-12-31 16:59 发表评论
    ]]>
    Ajax中用JSON http://www.aygfsteel.com/wangxinsh55/archive/2006/12/31/91198.htmlSIMONESIMONESun, 31 Dec 2006 08:52:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2006/12/31/91198.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/91198.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2006/12/31/91198.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/91198.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/91198.html    面QjsonExample.jsp

    <%@ page contentType="text/html; charset=GBK" %>
    <html>
    <head>
    <title>
    JSONCZ
    </title>
    <script type="text/javascript" src="zxml.src.js"></script>
    <script type="text/javascript" src="json.js"></script>
    <script type="text/javascript">
     var xmlHttp;
           
            //创徏对象
            function createXMLHttpRequest(){
             xmlHttp = zXmlHttp.createRequest();
            }
           
            function doJSON(){
               //得到Car对象
             var car = getCarObject();
                   
                    //用JSON字符串化car对象
                    var carAsJSON = car.toJSONString();
                    alert("汽R对象JSON化ؓ:\n" + carAsJSON);
                   
                    var url = "JSONExample?timeStamp=" + new Date().getTime();
                   
                    //创徏对象
                    createXMLHttpRequest();
                    xmlHttp.open("POST",url,true);
                    xmlHttp.onreadystatechange = handleStateChange;
                    xmlHttp.setRequestHeader("Content-Type","application/x-www-form.urlencoded");
                    xmlHttp.send(carAsJSON);
            }
           
            //回调Ҏ
            function handleStateChange(){
             if (xmlHttp.readyState == 4){
                     if (xmlHttp.status == 200){
                             parseResults();
                            }
                    }
            }
           
            //解析l果
            function parseResults(){
             var responseDiv = document.getElementById("serverResponse");
                    if (responseDiv.hasChildNodes()){
                     responseDiv.removeChild(responseDiv.childNode[0]);
                    }
                   
                    var responseText = document.createTextNode(xmlHttp.responseText);
                    responseDiv.appendChild(responseText);
            }
           
            //得到Car对象
            function getCarObject(){
             return new Car("Dodge","Coronet R/T",1968,"yellow");
            }
           
           
            //Car构造函?br />        function Car(make,model,year,color){
             this.make = make;
                    this.model = model;
                    this.year = year;
                    this.color = color;
            }
    </script>
    </head>
    <body>
    <br /><br />
    <form action="#">
      <input type="button" value="发送JSON数据" onclick="doJSON();"/>
    </form>
    <h2>
      服务器响应:
    </h2>
    <div id="serverResponse">
    </div>
    </body>
    </html>

        服务器:JSONExample.java

    package ajaxbook.chap4;

    import java.io.*;
    import java.net.*;
    import java.text.ParseException;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import org.json.JSONObject;

    public class JSONExample
        extends HttpServlet {
      //处理PostҎ
      protected void doPost(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException,
          IOException {
        String json = readJSONStringFromRequestBody(request);

        //使用JSONl字Ajax对象
        JSONObject jsonObject = null;
        try {
          jsonObject = new JSONObject(json);
        }
        catch (ParseException pe) {
          System.out.println("ParseException: " + pe.toString());
        }

        //q回输出l果
        String responseText = "You have a " + jsonObject.getInt("year") + " "
            + jsonObject.getString("make") + " " + jsonObject.getString("model")
            + " " + " that is " + jsonObject.getString("color") + " in color.";

        response.setContentType("text/xml");
        response.getWriter().print(responseText);
      }

      //得到参数
      private String readJSONStringFromRequestBody(HttpServletRequest request) {
        StringBuffer json = new StringBuffer();
        String line = null;
        try {
          BufferedReader reader = request.getReader();
          while ( (line = reader.readLine()) != null) {
            json.append(line);
          }
        }
        catch (Exception e) {
          System.out.println("Error reading JSON string: " + e.toString());
        }
        return json.toString();
      }
    }

     

    注意Q要引入json.js和json的源文gQ用json.jar不行Q源文g参见书籍源代码第三章

    参考:Ajax基础教程  作笔记吧 



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=975204



    SIMONE 2006-12-31 16:52 发表评论
    ]]>
    AJAX+jsp无刷新验证码实例http://www.aygfsteel.com/wangxinsh55/archive/2006/12/11/86907.htmlSIMONESIMONEMon, 11 Dec 2006 06:55:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2006/12/11/86907.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/86907.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2006/12/11/86907.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/86907.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/86907.html 【导诅R本文通过实例Q介l在做验证码的时候ؓ了给用户很好的体验,需要在原有验证方式基础之上增加一DjsQ通过xmlhttp来获取返回|以此来验证是否有效。同Ӟ本例q特别适合验用户名是否有效?/font>

    1、我们在做验证码的时候往往׃要反作弊Q验证有时故意加入多的干扰因素,q时验证码显CZ很清楚,用户l常输入错误。这样不但要重新h面Q导致用h有看清楚验证码而重填而不是修改,而且如果没有用session保存下用戯入的其它数据的话(如姓?Q用户刚刚输入的内容也不存在了,q样l用户造成不好的体验?

    2、本例在原有验证方式基础之上增加一DjsQ通过xmlhttp来获取返回|以此来验证是否有效,q样即用户览器不支持jsQ也不会影响他的正常使用了?

    3、ؓ了防止作弊,当用戯?ơ输入错误时则重载一下图片,q样也利于用户因为图片上的验证码辨认不清而其终无法输入正确?

    4、本例还特别适合验用户名是否有效Q只要从后台做个sql查询Q返回一个值或是xml卛_?q种例子太多 Q就在此不赘qC)?

    5、本例的优点在于非常方便用户输入Q而且减少Ҏ务器端的hQ可以说既改善用户体验而且略会节省带宽成本Q但相应地要在页面上增加一DJavaScript代码Q在目前|速越来越快h们要求便捯适的今天Q似乎我们更应注意提供给用户良好的用感受?

    代码如下Q?/p>

    1、img.jsp,输入主页?/strong>

    																

    <%@ page contentType="text/html; charset=GBK" language="java"

    import="java.sql.*" errorPage="" pageEncoding="GBK"%>

    <%

    //set Chinese Char

    //Cody by JarryLi@gmail.com;

    //homepage:jiarry.126.com

    request.setCharacterEncoding("GBK");

    response.setCharacterEncoding("GBK");

    response.setContentType("text/html; charset=GBK");

    %>

    <html>

    <head>

    <title>囄验证</title>

    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

    <script src="net.js"></script>

    </head>

    <body>

    AJAX(无刷新及时提C?验证码实例!cody by jarry

    <hr>

    <%

    String num=request.getParameter("num");

    String random=(String)session.getAttribute("random");

    String name=request.getParameter("name");

    if(num!=null&&random!=null&&name!=null)

    {

    if(num.equals(random))



    out.println("<font style=\"color:green;font-weight:bold\">

    恭喜您,验证码输入成功,q里是提交结果页面,可以写入数据库了Q?lt;/font>

    <a href=\"img.jsp\">q回再测?lt;/a><br>");

    out.println("您的名字是:"+name);

    out.println("<br>");

    out.println("您输入的是:"+num);

    out.println("验证码是Q?+random);

    out.println("</body>");

    return;//javascript:history.go(-1)

    }

    }

    %>

    <script type="text/javascript">

    var times=0;

    function subform(){

    var gtext=this.req.responseText;

    var info=document.getElementById("info");

    if(gtext.indexOf("validate_successful")!=-1){

    //info.innerHTML="<font color=green>验证码通过</font>";

    document.forms["myform"].submit();

    //当得到的DC合法,则验证码通过?br />
    }else{

    times++;

    if(times>=3){//如果q接3ơ输入错误,则重载图片,可以防止作弊和用L不清囄;

    info.innerHTML="接连3ơ输入错误。更新验证码Q请重新输入";

    document.forms["myform"].num.value="";

    show(document.getElementById('random'));

    times=0;

    }else{

    info.innerHTML="W?+times+"ơ验证码错误,h意区分大写 ";

    }

    document.forms["myform"].num.select();

    }

    }

    function validata(obj){

    var enter=true;

    var info=document.getElementById("info");

    var msg="";

    if(obj.name.value.match(/^\s*$/g)){//如果未输入名字,提示

    msg+="误入您的姓?lt;br>";enter=false

    }

    if(obj.num.value.match(/^\s*$/g)){//如果未输入验证码Q提C?br />
    msg+="误入验证码<br>";enter=false 

    }

    if(enter==false){

    info.innerHTML=msg;

    return false;

    }

    var url="num.jsp?num="+obj.num.value;

    var newxmlhttp=new net.ContentLoader(url,subform,"","get",null,null);

    return false;

    }

    function show(o){

    //重蝲验证?br />
    var timenow = new Date().getTime();

    o.src="random.jsp?d="+timenow;

    /*

    //时执行;

    setTimeout(function(){

    o.src="random.jsp?d="+timenow;

    }

    ,20);

    */

    }

    </script>

    <form action="img.jsp" name="myform" method="post"

    onsubmit="return validata(this);">

    您的姓名Q?lt;input type="text" name="name" size=10> (Z更好地说明此例,特加姓名一?<br>

    ??码:<input type="text" name="num" size=10 maxlength="4">

    <img src="random.jsp" id="random" align="" valign="absmiddle" hspace="5">

    <a href="javascript:show(document.getElementById('random'))">验证码看不清</a><br>

    <br> <input type="submit" value=" 提交 "><br>

    <div id=info style="color:red;padding:10px;font-size:12px;"></div>

    </form>

    </body>

    </html>

    2、num.jsp,反馈xmlhttph的页?/strong>

    																

    <%@ page contentType="text/html; charset=GBK" language="java"

    import="java.sql.*" errorPage="" pageEncoding="GBK"%>

    <%

    //set Chinese Char

    //Cody by JarryLi@gmail.com;

    //homepage:jiarry.126.com

    request.setCharacterEncoding("GBK");

    response.setCharacterEncoding("GBK");

    response.setContentType("text/html; charset=GBK");

    %>

    <%

    String num=request.getParameter("num");

    String random=(String)session.getAttribute("random");

    if(num!=null&&random!=null)

    {

    if(!num.equals(random))

    {

    /*

    out.println("<script>alert('验证码错误!请重试?)</script>");

    out.println("<script>history.go(-1)</script>");

    //response.sendRedirect("img.jsp");

    */

    out.print("validate_failed:"+random);

    }

    else

    {

    //out.println("<center>验证成功Q?lt;/center>");

    out.print("validate_successful:"+random);

    }

    }

    %>

    3、random.jsp,生成验证码图片的面

    																

    com.sun.image.codec.jpeg.*,java.util.*" %>]]>

    <%@ page autoFlush="false"  import="java.util.*,java.awt.*,

    java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*" %>

    <%

    //set Chinese Char

    //Cody by JarryLi@gmail.com;

    //homepage:jiarry.126.com

    request.setCharacterEncoding("GBK");

    response.setCharacterEncoding("GBK");

    response.setContentType("text/html; charset=GBK");

    %>

    <%

    String chose="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

    char display[]={'0',' ','0',' ','0',' ','0'},ran[]={'0','0','0','0'},temp;

    Random rand=new Random();

    for(int i=0;i<4;i++)

    {

    temp=chose.charAt(rand.nextInt(chose.length()));

    display[i*2]=temp;

    ran[i]=temp;

    }



    String random=String.valueOf(display);

    session.setAttribute("random",String.valueOf(ran));

    %>

    <%

    out.clear();

    response.setContentType("image/jpeg");

    response.addHeader("pragma","NO-cache");

    response.addHeader("Cache-Control","no-cache");

    response.addDateHeader("Expries",0);

    int width=80, height=30;

    BufferedImage image = new BufferedImage(width, height,

    BufferedImage.TYPE_INT_RGB);

    Graphics g = image.getGraphics();

    //以下填充背景颜色

    g.setColor(Color.GREEN);

    g.fillRect(0, 0, width, height);

    //讄字体颜色

    g.setColor(Color.RED);

    Font font=new Font("Arial",Font.PLAIN,20);

    g.setFont(font);

    //g.drawString(random,5,14);

    g.drawString(random,5,20);

    g.dispose();

    ServletOutputStream outStream = response.getOutputStream();

    JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);

    encoder.encode(image);

    outStream.close();

    %>



    4、net.js,装好的xmlhttp对象Q可以很方便的调?/strong>

    																

    /* namespacing object */

    var net=new Object();



    net.READY_STATE_UNINITIALIZED=0;

    net.READY_STATE_LOADING=1;

    net.READY_STATE_LOADED=2;

    net.READY_STATE_INTERACTIVE=3;

    net.READY_STATE_COMPLETE=4;

    /*--- content loader object for cross-browser requests ---*/

    net.ContentLoader=function(url,on_load,on_error,method,params,contentType){

    this.req=null;

    this.on_load=on_load;

    this.on_error=(on_error) ? on_error : this.defaultError;

    this.loadXMLDoc(url,method,params,contentType);

    }

    net.ContentLoader.prototype.loadXMLDoc=function(url,method,params,contentType){

    if (!method)

    {

    method="GET";

    }

    if (!contentType && method=="POST")

    {

    contentType='application/x-www-form-urlencoded';

    }

    if (window.XMLHttpRequest)

    {

    this.req=new XMLHttpRequest();

    }

    else if (window.ActiveXObject)

    {

    //add try catch;

    try {

    this.req = new ActiveXObject("Msxml2.XMLHTTP");

    }catch (e1){

    try {

    this.req = new ActiveXObject("Microsoft.XMLHTTP");    

    } catch (e2){

    }

    }

    //

    //this.req=new ActiveXObject("Microsoft.XMLHTTP");

    }

    if (this.req)

    {

    try

    {

    var loader=this;

    this.req.onreadystatechange=function()

    {

    net.ContentLoader.onReadyState.call(loader);

    }

    this.req.open(method,url,true);

    if (contentType)

    {

    this.req.setRequestHeader('Content-Type', contentType);

    }

    this.req.send(params);

    }

    catch (err)

    {

    this.on_error.call(this);

    }

    }

    }

    net.ContentLoader.onReadyState=function(){

    var req=this.req;

    var ready=req.readyState;

    if (ready==net.READY_STATE_COMPLETE){

    var httpStatus=req.status;

    if (httpStatus==200 || httpStatus==0){

    this.on_load.call(this);

    }else{

    this.on_error.call(this);

    }

    }

    }

    net.ContentLoader.prototype.defaultError=function(){

    alert("error fetching data!"

    +"\n\nreadyState:"+this.req.readyState

    +"\nstatus: "+this.req.status

    +"\nheaders: "+this.req.getAllResponseHeaders());

    }

    Q责ȝ?火凤?sunsj@51cto.com  TELQ(010Q?8476636-8007Q?br />





    SIMONE 2006-12-11 14:55 发表评论
    ]]>
    prototype.js 1.4版开发者手?强烈推荐) http://www.aygfsteel.com/wangxinsh55/archive/2006/11/23/82984.htmlSIMONESIMONEThu, 23 Nov 2006 03:31:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2006/11/23/82984.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/82984.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2006/11/23/82984.html#Feedback1http://www.aygfsteel.com/wangxinsh55/comments/commentRss/82984.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/82984.html阅读全文

    SIMONE 2006-11-23 11:31 发表评论
    ]]>
    Struts AjaxTagshttp://www.aygfsteel.com/wangxinsh55/archive/2006/11/22/82757.htmlSIMONESIMONEWed, 22 Nov 2006 06:10:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2006/11/22/82757.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/82757.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2006/11/22/82757.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/82757.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/82757.htmlFrank W. Zammetti
    扩展了Struts的Tag库,使Struts具备了AJAX功能?
          Q注Q下面的代码引用?strong>Frank W. Zammetti 的ajaxtags包)
     
          Tag库的扩展
          1、FormTag
               增加了refAjax属性以及setter和getterҎQ?/div>
          2、BaseHandlerTag
               增加了refAjax属性以及setter和getterҎQ?/div>
               同时扩展了prepare×××EventsҎQ其加载Ajax属性,如:
               if (getOnkeydown() != null) {
                      ......
               }
               /* Frank W. Zammetti */
               else {
                      prepareAjax("onkeydown", handlers);
               }
               /* Frank W. Zammetti */
          3、Struts-Html.tld
               增加了refAjax属性;
     
          应用
          1、ajax-config.xml
               ......
               <form ajaxRef="example1">
                    <element ajaxRef="button">
                          <event type="onclick">
                                //发送请求的讄
                                <requestHandler type="std:QueryString">
                                     <target>example1.do</target>
                                     <parameter>firstName=firstName,lastName=lastName</parameter>
                                </requestHandler>
                                //回调函数Q方法)及回写区域的讄
                                <responseHandler type="std:InnerHTML">
                                     <parameter>example1_resultLayer</parameter>
                                </responseHandler>
                          </event>
                    </element>
               </form>
               ......
          2、struts-config.xml
               ......
               //与其它Action的区别是QAjax调用的Action没有input和forward
               <action path="/example1" name="example1Form" scope="request"
                                 type="com.omnytex.ajaxtags.Example1Action" />
               ......
               //Ajax Tag Plugin
               <plug-in className="org.apache.struts.taglib.html.ajax.AjaxInit" />
               ......
          3、Jsp客户界面
               ......
               //对应于ajax-config.xml中的form ajaxRef
               <html:form action="example1" ajaxRef="example1">
                    ......
                    //对应于ajax-config.xml中的Element ajaxRef
                    <html:button property="button" value="Click to do Ajax!" ajaxRef="button" />
               </html:form>
               Result:<br>
               //对应于ajax-config.xml中的responseHandler
               <span id="example1_resultLayer">&nbsp;</span>
               ......
               //启用AjaxQ应该放在Jsp的最后)
               <html:enableAjax />
               ......
          4、Action
               ......
               public ActionForward execute( ...... ) throws Exception {
                    try {
                        ......
                        //Ajax的Action需要输出内容到out
                        PrintWriter out = response.getWriter();
                        out.println(......);
                        out.flush();
                        out.close();
                    } catch (Exception e) {
                        System.err.println("Exception in Example1Action.execute(): " + e);
                    }
                    //׃Ajax的Action输出的内容由面的区域接Ӟ不需要蟩转到其它面
                    //所以,q回null
                    return null;
               }
               ......
     
          Struts Ajax Tag工作原理
          1、Struts启动Q加载AjaxInitQ?/div>
          2、AjaxInit解析ajax-config.xmlQ?/div>
          3、Struts加蝲AjaxEnabled的JspQ?/div>
          4、Struts-AjaxTagҎForm ajaxRef和elment ajaxRef扑ֈajax-config的设|;
          5、输出AjaxEnabled的HtmlQTag库加入了Ajax需要的ScriptQ如QXMLHttpRequestQ;
          6、用戯入数据,提交数据Q异步模式提交后Q用户可以l其它操作)Q?/div>
          7、XMLHttpRequest对象接管提交数据Qƈ向Struts提交do及参敎ͼ
          8、Struts ActionServlet加蝲FormBeanQ和相应的ActionQ?/div>
          9、Struts Action执行相应逻辑Q得到返回的数据Q通过out输出Q?/div>
          10、XMLHttpRequest得到Strutsq回的数据;
          11、XMLHttpRequest调用讄的回调函敎ͼҎQ,输出数据到指定的区域Q?/div>

    SIMONE 2006-11-22 14:10 发表评论
    ]]>Ajax跨域h解决Ҏ之Modello?http://www.aygfsteel.com/wangxinsh55/archive/2006/10/26/77382.htmlSIMONESIMONEThu, 26 Oct 2006 05:05:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2006/10/26/77382.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/77382.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2006/10/26/77382.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/77382.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/77382.html Modello 是一个允许ƈ且鼓׃?JavaScript 来编写类的框Ӟ?a target="_blank">Modello.ajax则是利用此框架达到Ajax跨域h的一个Ajax装cR?/p>

    对于跨域调用QModello.ajax 采用在本域服务器讄一个中?proxy 的方式。?proxy 方式可以不用对个别浏览器q行Ҏ讄Q不用依赖具体的服务器,q且具备扩展能力{优炏V随 Modello.ajax 工具集提供的 proxy ?php 写成Q可q行 php 的服务器都可以安装。(以上内容转自《Ajax Wing: 跨域Ajax工具: Modello.ajax?/a>Q?/p>

    使用Modello的代码如下:

    <script type="text/javascript" src="js/modello.js"></script>
    <script type="text/javascript" src="js/modello.ajax.js"></script>

    <script>
    Define('URLGET_PROXY', 'jsproxy.php');
    var urlget = Class.get('modello.ajax.Urllib').urlget;

    var url = "var response = urlget(url);
    alert("跨域hURL地址"+url);

    var myresult = response.getXML();

    alert("Ajax提取Q?+myresult.childNodes[1].childNodes[0].childNodes[0].text+"”成?);

    </script>

    代码实例



    SIMONE 2006-10-26 13:05 发表评论
    ]]>
    关于XMLQXMLHTTPQ跨域加载数据不会出现跨域的安全提示信息的问?/title><link>http://www.aygfsteel.com/wangxinsh55/archive/2006/03/30/38259.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 30 Mar 2006 07:02:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangxinsh55/archive/2006/03/30/38259.html</guid><wfw:comment>http://www.aygfsteel.com/wangxinsh55/comments/38259.html</wfw:comment><comments>http://www.aygfsteel.com/wangxinsh55/archive/2006/03/30/38259.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangxinsh55/comments/commentRss/38259.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangxinsh55/services/trackbacks/38259.html</trackback:ping><description><![CDATA[ |上看了很多资料Q但好象很少到跨域读取XML文档的问题,有些论坛或BLOG关于XML跨域d的问题,实现h非法复杂。?br />在这里我介绍一下XMLHTTP跨域d面数据的问题,以JSZ <br /><br />一、读取数据?br /><br />//建立对象<br />var xml = new ActiveXObject("Microsoft.XMLHTTP")<br /><br />//q里的abc.xml是被d的文Ӟ当然也可以换成别的文Ӟfalse表示非异步传输,async是asynchronism写?br />xml.open("get","<img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" /><a target="_blank">http://www.mydomain.com/abc.xml",false)</a>  <br />xml.send()<br /><br /><br />二、在被读取数据的域根下(上例是在www.mydomain.com/下)Q徏立一个XML {略文gQ名字一定要是crossdomain.xml?br /><br />在策略文件中加入以下代码<br /><?xml version="1.0"?><br /><cross-domain-policy><br />    <allow-access-from domain="www.mydomain.com"/> //domain属性的值就是被允许从本站读取数据的来源域名<br /></cross-domain-policy><br /><br /><br />q样完成了跨域d数据q不会出现跨域的安全提示信息?br /><img src ="http://www.aygfsteel.com/wangxinsh55/aggbug/38259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangxinsh55/" target="_blank">SIMONE</a> 2006-03-30 15:02 <a href="http://www.aygfsteel.com/wangxinsh55/archive/2006/03/30/38259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ν</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ĺ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ҷ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ѯ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">̫</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">潭</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">»</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƺ</a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽȪ</a>| <a href="http://" target="_blank">»</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ԫ</a>| <a href="http://" target="_blank">Ϳ</a>| <a href="http://" target="_blank">˹</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>