﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-welkin的技术薄</title><link>http://www.blogjava.net/welkinwwl/</link><description>做一个务实的人会让你学到的更多</description><language>zh-cn</language><lastBuildDate>Sun, 21 Jun 2026 08:20:48 GMT</lastBuildDate><pubDate>Sun, 21 Jun 2026 08:20:48 GMT</pubDate><ttl>60</ttl><item><title>使用JSON做Ajax通讯载体</title><link>http://www.blogjava.net/welkinwwl/articles/ajax.html</link><dc:creator>welkin</dc:creator><author>welkin</author><pubDate>Sat, 16 Feb 2008 14:01:00 GMT</pubDate><guid>http://www.blogjava.net/welkinwwl/articles/ajax.html</guid><wfw:comment>http://www.blogjava.net/welkinwwl/comments/180210.html</wfw:comment><comments>http://www.blogjava.net/welkinwwl/articles/ajax.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/welkinwwl/comments/commentRss/180210.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/welkinwwl/services/trackbacks/180210.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;您可能已经习惯使用XML作为Ajax的通讯载体，XML这种标签的格式看起来也很舒服，但是当您用responseXML接收到服务器端大量的XML数据时，您可能还要再打开一个预先写好xml通讯数据的记事本，一边看着文本一边对应着格式来解析xml数据，这样的工作让你感到厌烦？厌倦了文本解析工作的您一定会这样想，如果后台能返回给我一个对象，同时这个对象已将我需要的数据封装在里面，那该有多好啊！是啊，JSON就是为此而诞生的！当您前台通过Ajax和后台交互得到了JSON格式的文本之后，您只需eval一次这个文本就能得到这样的对象了！<br />
&nbsp;&nbsp;&nbsp;&nbsp;我们直接看代码好了，我认为代码会比语言讲述的更加直观明了:)<br />
一个用户登陆的例子：<br />
我们先为项目添加一个myjs.js文件,内容如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;XMLHttpReq&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建XMLHttpRequest对象&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img id="Codehighlighter1_85_472_Open_Image" onclick="this.style.display='none'; Codehighlighter1_85_472_Open_Text.style.display='none'; Codehighlighter1_85_472_Closed_Image.style.display='inline'; Codehighlighter1_85_472_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_85_472_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_85_472_Closed_Text.style.display='none'; Codehighlighter1_85_472_Open_Image.style.display='inline'; Codehighlighter1_85_472_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;createXMLHttpRequest()</span><span id="Codehighlighter1_85_472_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_85_472_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_115_245_Open_Image" onclick="this.style.display='none'; Codehighlighter1_115_245_Open_Text.style.display='none'; Codehighlighter1_115_245_Closed_Image.style.display='inline'; Codehighlighter1_115_245_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_115_245_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_115_245_Closed_Text.style.display='none'; Codehighlighter1_115_245_Open_Image.style.display='inline'; Codehighlighter1_115_245_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(window.XMLHttpRequest)&nbsp;</span><span id="Codehighlighter1_115_245_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_115_245_Open_Text"><span style="color: #000000">{&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">检测是否为Mozilla浏览器</span><span style="color: #008000"><br />
<img id="Codehighlighter1_165_231_Open_Image" onclick="this.style.display='none'; Codehighlighter1_165_231_Open_Text.style.display='none'; Codehighlighter1_165_231_Closed_Image.style.display='inline'; Codehighlighter1_165_231_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_165_231_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_165_231_Closed_Text.style.display='none'; Codehighlighter1_165_231_Open_Image.style.display='inline'; Codehighlighter1_165_231_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span id="Codehighlighter1_165_231_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_165_231_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLHttpReq&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;XMLHttpRequest();<br />
<img id="Codehighlighter1_240_241_Open_Image" onclick="this.style.display='none'; Codehighlighter1_240_241_Open_Text.style.display='none'; Codehighlighter1_240_241_Closed_Image.style.display='inline'; Codehighlighter1_240_241_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_240_241_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_240_241_Closed_Text.style.display='none'; Codehighlighter1_240_241_Open_Image.style.display='inline'; Codehighlighter1_240_241_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(e)</span><span id="Codehighlighter1_240_241_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_240_241_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_280_469_Open_Image" onclick="this.style.display='none'; Codehighlighter1_280_469_Open_Text.style.display='none'; Codehighlighter1_280_469_Closed_Image.style.display='inline'; Codehighlighter1_280_469_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_280_469_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_280_469_Closed_Text.style.display='none'; Codehighlighter1_280_469_Open_Image.style.display='inline'; Codehighlighter1_280_469_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(window.ActiveXObject)&nbsp;</span><span id="Codehighlighter1_280_469_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_280_469_Open_Text"><span style="color: #000000">{&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">检测是否为IE浏览器</span><span style="color: #008000"><br />
<img id="Codehighlighter1_302_361_Open_Image" onclick="this.style.display='none'; Codehighlighter1_302_361_Open_Text.style.display='none'; Codehighlighter1_302_361_Closed_Image.style.display='inline'; Codehighlighter1_302_361_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_302_361_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_302_361_Closed_Text.style.display='none'; Codehighlighter1_302_361_Open_Image.style.display='inline'; Codehighlighter1_302_361_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_302_361_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_302_361_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLHttpReq&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActiveXObject(</span><span style="color: #000000">"</span><span style="color: #000000">Msxml2.XMLHTTP</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_373_465_Open_Image" onclick="this.style.display='none'; Codehighlighter1_373_465_Open_Text.style.display='none'; Codehighlighter1_373_465_Closed_Image.style.display='inline'; Codehighlighter1_373_465_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_373_465_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_373_465_Closed_Text.style.display='none'; Codehighlighter1_373_465_Open_Image.style.display='inline'; Codehighlighter1_373_465_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(e)&nbsp;</span><span id="Codehighlighter1_373_465_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_373_465_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_383_447_Open_Image" onclick="this.style.display='none'; Codehighlighter1_383_447_Open_Text.style.display='none'; Codehighlighter1_383_447_Closed_Image.style.display='inline'; Codehighlighter1_383_447_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_383_447_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_383_447_Closed_Text.style.display='none'; Codehighlighter1_383_447_Open_Image.style.display='inline'; Codehighlighter1_383_447_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_383_447_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_383_447_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLHttpReq&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActiveXObject(</span><span style="color: #000000">"</span><span style="color: #000000">Microsoft.XMLHTTP</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_459_460_Open_Image" onclick="this.style.display='none'; Codehighlighter1_459_460_Open_Text.style.display='none'; Codehighlighter1_459_460_Closed_Image.style.display='inline'; Codehighlighter1_459_460_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_459_460_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_459_460_Closed_Text.style.display='none'; Codehighlighter1_459_460_Open_Image.style.display='inline'; Codehighlighter1_459_460_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(e)&nbsp;</span><span id="Codehighlighter1_459_460_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_459_460_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">发送请求方法</span><span style="color: #008000"><br />
<img id="Codehighlighter1_511_672_Open_Image" onclick="this.style.display='none'; Codehighlighter1_511_672_Open_Text.style.display='none'; Codehighlighter1_511_672_Closed_Image.style.display='inline'; Codehighlighter1_511_672_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_511_672_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_511_672_Closed_Text.style.display='none'; Codehighlighter1_511_672_Open_Image.style.display='inline'; Codehighlighter1_511_672_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;sendRequest(url)&nbsp;</span><span id="Codehighlighter1_511_672_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_511_672_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createXMLHttpRequest();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLHttpReq.open(</span><span style="color: #000000">"</span><span style="color: #000000">GET</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;url,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLHttpReq.onreadystatechange&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processResponse;</span><span style="color: #008000">//</span><span style="color: #008000">指定响应处理函数</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLHttpReq.send(</span><span style="color: #0000ff">null</span><span style="color: #000000">);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;发送请求</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;处理返回信息函数</span><span style="color: #008000"><br />
<img id="Codehighlighter1_718_1073_Open_Image" onclick="this.style.display='none'; Codehighlighter1_718_1073_Open_Text.style.display='none'; Codehighlighter1_718_1073_Closed_Image.style.display='inline'; Codehighlighter1_718_1073_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_718_1073_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_718_1073_Closed_Text.style.display='none'; Codehighlighter1_718_1073_Open_Image.style.display='inline'; Codehighlighter1_718_1073_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;processResponse()&nbsp;</span><span id="Codehighlighter1_718_1073_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_718_1073_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_757_1071_Open_Image" onclick="this.style.display='none'; Codehighlighter1_757_1071_Open_Text.style.display='none'; Codehighlighter1_757_1071_Closed_Image.style.display='inline'; Codehighlighter1_757_1071_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_757_1071_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_757_1071_Closed_Text.style.display='none'; Codehighlighter1_757_1071_Open_Image.style.display='inline'; Codehighlighter1_757_1071_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(XMLHttpReq.readyState&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">4</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_757_1071_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_757_1071_Open_Text"><span style="color: #000000">{&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;判断XMLHttpRequest对象是否已成功接收数据</span><span style="color: #008000"><br />
<img id="Codehighlighter1_829_994_Open_Image" onclick="this.style.display='none'; Codehighlighter1_829_994_Open_Text.style.display='none'; Codehighlighter1_829_994_Closed_Image.style.display='inline'; Codehighlighter1_829_994_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_829_994_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_829_994_Closed_Text.style.display='none'; Codehighlighter1_829_994_Open_Image.style.display='inline'; Codehighlighter1_829_994_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(XMLHttpReq.status&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">200</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_829_994_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_829_994_Open_Text"><span style="color: #000000">{&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;请求成功</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; loginCallback();&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008000">//调用处理函数</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1001_1061_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1001_1061_Open_Text.style.display='none'; Codehighlighter1_1001_1061_Closed_Image.style.display='inline'; Codehighlighter1_1001_1061_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1001_1061_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1001_1061_Closed_Text.style.display='none'; Codehighlighter1_1001_1061_Open_Image.style.display='inline'; Codehighlighter1_1001_1061_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_1001_1061_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1001_1061_Open_Text"><span style="color: #000000">{&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">页面异常</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.alert(</span><span style="color: #000000">"</span><span style="color: #000000">页面有错误</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
&nbsp;&nbsp;&nbsp;&nbsp;myjs.js这个文件已经为我们完成了建立Ajax通讯的基本工作。<br />
我们再新建一个登陆页面<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #ff0000">&nbsp;src</span><span style="color: #0000ff">="myjs.js"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #ff0000">&nbsp;src</span><span style="color: #0000ff">="login.js"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">form</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />用户名：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="username"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />密码：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="userpass"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="button"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="submit"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="登陆"</span><span style="color: #ff0000">&nbsp;onclick</span><span style="color: #0000ff">="login()"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">form</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
在页面引入的login.js是一会要创建的，用来处理用户登陆的细节<br />
<br />
为项目添加login.js<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_16_284_Open_Image" onclick="this.style.display='none'; Codehighlighter1_16_284_Open_Text.style.display='none'; Codehighlighter1_16_284_Closed_Image.style.display='inline'; Codehighlighter1_16_284_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_16_284_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_16_284_Closed_Text.style.display='none'; Codehighlighter1_16_284_Open_Image.style.display='inline'; Codehighlighter1_16_284_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;login()</span><span id="Codehighlighter1_16_284_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_16_284_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">对用户登陆数据进行校验并发出Ajax请求</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;username</span><span style="color: #000000">=</span><span style="color: #000000">document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].username.value;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;userpass</span><span style="color: #000000">=</span><span style="color: #000000">document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].userpass.value;<br />
<img id="Codehighlighter1_176_206_Open_Image" onclick="this.style.display='none'; Codehighlighter1_176_206_Open_Text.style.display='none'; Codehighlighter1_176_206_Closed_Image.style.display='inline'; Codehighlighter1_176_206_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_176_206_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_176_206_Closed_Text.style.display='none'; Codehighlighter1_176_206_Open_Image.style.display='inline'; Codehighlighter1_176_206_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(username</span><span style="color: #000000">==</span><span style="color: #000000">""</span><span style="color: #000000">||</span><span style="color: #000000">userpass</span><span style="color: #000000">==</span><span style="color: #000000">""</span><span style="color: #000000">)</span><span id="Codehighlighter1_176_206_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_176_206_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">用户名或密码不得为空！</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_211_282_Open_Image" onclick="this.style.display='none'; Codehighlighter1_211_282_Open_Text.style.display='none'; Codehighlighter1_211_282_Closed_Image.style.display='inline'; Codehighlighter1_211_282_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_211_282_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_211_282_Closed_Text.style.display='none'; Codehighlighter1_211_282_Open_Image.style.display='inline'; Codehighlighter1_211_282_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #0000ff">else</span><span id="Codehighlighter1_211_282_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_211_282_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;sendRequest(</span><span style="color: #000000">"</span><span style="color: #000000">login.jsp?username=</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">username</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&amp;userpass=</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">userpass);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_311_392_Open_Image" onclick="this.style.display='none'; Codehighlighter1_311_392_Open_Text.style.display='none'; Codehighlighter1_311_392_Closed_Image.style.display='inline'; Codehighlighter1_311_392_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_311_392_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_311_392_Closed_Text.style.display='none'; Codehighlighter1_311_392_Open_Image.style.display='inline'; Codehighlighter1_311_392_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;loginCallback()</span><span id="Codehighlighter1_311_392_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_311_392_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">处理回调函数</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;json</span><span style="color: #000000">=</span><span style="color: #000000">eval('('</span><span style="color: #000000">+</span><span style="color: #000000">XMLHttpReq.responseText</span><span style="color: #000000">+</span><span style="color: #000000">')');<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;alert(json.msg+"\n"+json.username+"\n"+json.userpass);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
当用户填写完登陆表单后，按下[登陆]按钮将触发login()方法，login()方法对用户的登陆数据进行校验后发送请求，后台接收并做处理后返回相关信息（稍候讲解后台如何处理），这时XMLHttpReq的onreadystatechange发生改变，调用我们指向的processResponse函数，函数确定数据请求成功后调用loginCallback回调函数。loginCallback中，通过responseText接收将信息数据的文本，这里注意：由于我们后台返回来的数据是JSON格式的，我们在前台希望得到的是一个JSON格式的对象，所以我们还需要执行一次eval函数将文本转化为对象，如果直接把reponseText赋值给变量json,json将会是一个string。<br />
下面我们要引入后台部分了，我们给项目来个jsp吧（我只会jsp - -|| ）<br />
添加login.jsp<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&lt;%</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />request.setCharacterEncoding(</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />response.setContentType(</span><span style="color: #000000">"</span><span style="color: #000000">text/html</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />response.setCharacterEncoding(</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />String&nbsp;username</span><span style="color: #000000">=</span><span style="color: #000000">request.getParameter(</span><span style="color: #000000">"</span><span style="color: #000000">username</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />String&nbsp;userpass</span><span style="color: #000000">=</span><span style="color: #000000">request.getParameter(</span><span style="color: #000000">"</span><span style="color: #000000">userpass</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />String&nbsp;message</span><span style="color: #000000">=</span><span style="color: #000000">""</span><span style="color: #000000">;<br />
<img id="Codehighlighter1_276_354_Open_Image" onclick="this.style.display='none'; Codehighlighter1_276_354_Open_Text.style.display='none'; Codehighlighter1_276_354_Closed_Image.style.display='inline'; Codehighlighter1_276_354_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_276_354_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_276_354_Closed_Text.style.display='none'; Codehighlighter1_276_354_Open_Image.style.display='inline'; Codehighlighter1_276_354_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">(username</span><span style="color: #000000">==</span><span style="color: #000000">"</span><span style="color: #000000">tom</span><span style="color: #000000">"</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">userpass</span><span style="color: #000000">==</span><span style="color: #000000">"</span><span style="color: #000000">123</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span id="Codehighlighter1_276_354_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_276_354_Open_Text"><span style="color: #000000">{&nbsp;message</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">{msg:'success',username:'</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">username</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">',userpass:'</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">userpass</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">'}</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;;<br />
<img id="Codehighlighter1_359_436_Open_Image" onclick="this.style.display='none'; Codehighlighter1_359_436_Open_Text.style.display='none'; Codehighlighter1_359_436_Closed_Image.style.display='inline'; Codehighlighter1_359_436_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_359_436_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_359_436_Closed_Text.style.display='none'; Codehighlighter1_359_436_Open_Image.style.display='inline'; Codehighlighter1_359_436_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />}</span></span><span style="color: #0000ff">else</span><span id="Codehighlighter1_359_436_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_359_436_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />message</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">{msg:'failed',username:'</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">username</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">',userpass:'</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">userpass</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">'}</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />out.print(message);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />out.close();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">%&gt;</span></div>
没啥好说的，注意一下JSON格式的写法就可以了，以"{"开头，"}"结尾，中间可以定义一些属性和方法,格式为"名称:值/方法体"。<br />
<br />
恩，我认为大功告成了:)<br />
<img src ="http://www.blogjava.net/welkinwwl/aggbug/180210.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/welkinwwl/" target="_blank">welkin</a> 2008-02-16 22:01 <a href="http://www.blogjava.net/welkinwwl/articles/ajax.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中的继承(二) </title><link>http://www.blogjava.net/welkinwwl/articles/180141.html</link><dc:creator>welkin</dc:creator><author>welkin</author><pubDate>Fri, 15 Feb 2008 18:08:00 GMT</pubDate><guid>http://www.blogjava.net/welkinwwl/articles/180141.html</guid><wfw:comment>http://www.blogjava.net/welkinwwl/comments/180141.html</wfw:comment><comments>http://www.blogjava.net/welkinwwl/articles/180141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/welkinwwl/comments/commentRss/180141.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/welkinwwl/services/trackbacks/180141.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;借鉴于Prototype框架中的继承机制的实现，我们可以更加有条理的改写我们的代码，让它看起来更加符合面向对象的风格。在prototype中的继承是使用extend方法，所以需要先要定义extend函数(为了方便理解，变量名称有改动)：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #008000">//</span><span style="color: #008000">为Object添加一个extend静态类方法</span><span style="color: #008000"><br />
<img id="Codehighlighter1_67_166_Open_Image" onclick="this.style.display='none'; Codehighlighter1_67_166_Open_Text.style.display='none'; Codehighlighter1_67_166_Closed_Image.style.display='inline'; Codehighlighter1_67_166_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_67_166_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_67_166_Closed_Text.style.display='none'; Codehighlighter1_67_166_Open_Image.style.display='inline'; Codehighlighter1_67_166_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #000000">Object.extend</span><span style="color: #000000">=</span><span style="color: #0000ff">function</span><span style="color: #000000">(destination,source)</span><span id="Codehighlighter1_67_166_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_67_166_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_94_142_Open_Image" onclick="this.style.display='none'; Codehighlighter1_94_142_Open_Text.style.display='none'; Codehighlighter1_94_142_Closed_Image.style.display='inline'; Codehighlighter1_94_142_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_94_142_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_94_142_Closed_Text.style.display='none'; Codehighlighter1_94_142_Open_Image.style.display='inline'; Codehighlighter1_94_142_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(property&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;source)</span><span id="Codehighlighter1_94_142_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_94_142_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;destination[property]</span><span style="color: #000000">=</span><span style="color: #000000">source[property];<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;destination;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">为Object添加extend方法</span><span style="color: #008000"><br />
<img id="Codehighlighter1_224_271_Open_Image" onclick="this.style.display='none'; Codehighlighter1_224_271_Open_Text.style.display='none'; Codehighlighter1_224_271_Closed_Image.style.display='inline'; Codehighlighter1_224_271_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_224_271_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_224_271_Closed_Text.style.display='none'; Codehighlighter1_224_271_Open_Image.style.display='inline'; Codehighlighter1_224_271_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #000000">Object.prototype.extend</span><span style="color: #000000">=</span><span style="color: #0000ff">function</span><span style="color: #000000">(o)</span><span id="Codehighlighter1_224_271_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_224_271_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;Object.extend.apply(</span><span style="color: #0000ff">this</span><span style="color: #000000">,[</span><span style="color: #0000ff">this</span><span style="color: #000000">,o]);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
在prototype中定义extend方法分两步走。<br />
第一步，先为Object添加一个extend静态类方法，这个方法的作用是将原类(source)的所有属性和方法通过反射机制(for(... in ...))来传给目的类(destination)，最后返回目的类。<br />
第二步，为Object类的原形添加extend方法，在这个方法中调用了第一步中定义的Object类静态方法extend，apply方法中的第一个this是要绑定到的当前对象，第二个参数是个数组，数组中的this是对象本身，o是传进来的参数。这个extend方法的作用是将对象o的所有属性和方法赋值给对象自身，再将自身返回，得到的就是一个继承了调用extend方法的函数的所有属性和方法的类，你可以在调用extend方法时在其参数中用JSON格式来为其添加新方法/属性或是重写旧方法。<br />
<br />
下面我们就可以用这个extend方法了，我们还是举Person和Teacher的例子：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">定义基类Person</span><span style="color: #008000"><br />
<img id="Codehighlighter1_38_76_Open_Image" onclick="this.style.display='none'; Codehighlighter1_38_76_Open_Text.style.display='none'; Codehighlighter1_38_76_Closed_Image.style.display='inline'; Codehighlighter1_38_76_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_38_76_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_38_76_Closed_Text.style.display='none'; Codehighlighter1_38_76_Open_Image.style.display='inline'; Codehighlighter1_38_76_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Person(name,age)</span><span id="Codehighlighter1_38_76_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_38_76_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name</span><span style="color: #000000">=</span><span style="color: #000000">name;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.age</span><span style="color: #000000">=</span><span style="color: #000000">age;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_95_152_Open_Image" onclick="this.style.display='none'; Codehighlighter1_95_152_Open_Text.style.display='none'; Codehighlighter1_95_152_Closed_Image.style.display='inline'; Codehighlighter1_95_152_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_95_152_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_95_152_Closed_Text.style.display='none'; Codehighlighter1_95_152_Open_Image.style.display='inline'; Codehighlighter1_95_152_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />Person.prototype</span><span style="color: #000000">=</span><span id="Codehighlighter1_95_152_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_95_152_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_116_150_Open_Image" onclick="this.style.display='none'; Codehighlighter1_116_150_Open_Text.style.display='none'; Codehighlighter1_116_150_Closed_Image.style.display='inline'; Codehighlighter1_116_150_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_116_150_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_116_150_Closed_Text.style.display='none'; Codehighlighter1_116_150_Open_Image.style.display='inline'; Codehighlighter1_116_150_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;shout:</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_116_150_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_116_150_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">I'm&nbsp;a&nbsp;person.</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">定义Person子类Teacher</span><span style="color: #008000"><br />
<img id="Codehighlighter1_201_239_Open_Image" onclick="this.style.display='none'; Codehighlighter1_201_239_Open_Text.style.display='none'; Codehighlighter1_201_239_Closed_Image.style.display='inline'; Codehighlighter1_201_239_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_201_239_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_201_239_Closed_Text.style.display='none'; Codehighlighter1_201_239_Open_Image.style.display='inline'; Codehighlighter1_201_239_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Teacher(name,age)</span><span id="Codehighlighter1_201_239_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_201_239_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name</span><span style="color: #000000">=</span><span style="color: #000000">name;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.age</span><span style="color: #000000">=</span><span style="color: #000000">age;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_281_339_Open_Image" onclick="this.style.display='none'; Codehighlighter1_281_339_Open_Text.style.display='none'; Codehighlighter1_281_339_Closed_Image.style.display='inline'; Codehighlighter1_281_339_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_281_339_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_281_339_Closed_Text.style.display='none'; Codehighlighter1_281_339_Open_Image.style.display='inline'; Codehighlighter1_281_339_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />Teacher.prototype</span><span style="color: #000000">=</span><span style="color: #000000">(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Person()).extend(</span><span id="Codehighlighter1_281_339_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_281_339_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_302_337_Open_Image" onclick="this.style.display='none'; Codehighlighter1_302_337_Open_Text.style.display='none'; Codehighlighter1_302_337_Closed_Image.style.display='inline'; Codehighlighter1_302_337_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_302_337_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_302_337_Closed_Text.style.display='none'; Codehighlighter1_302_337_Open_Image.style.display='inline'; Codehighlighter1_302_337_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;shout:</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_302_337_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_302_337_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">I'm&nbsp;a&nbsp;teacher.</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">);</span></div>
这里与先前的例子不同的是在定义Person和Teacher时，将构造函数和方法的定义分开，定义方法时使用JSON格式，这样看起来就更符合面向对象的风格了，注意Teacher继承Person的时候，在调用extend方法时又重写了Person的shout方法，这里也是使用JSON格式。<br />
好！我们来测试一下吧！<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;p</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Person(</span><span style="color: #000000">"</span><span style="color: #000000">tom</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">18</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">定义Person对象</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;t</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Teacher(</span><span style="color: #000000">"</span><span style="color: #000000">Green</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">33</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">定义Teacher对象</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">p.shout();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />t.shout();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
我们将看到结果：<br />
第一个对话框："I'm a person."<br />
第二个对话框："I'm a teacher."<br />
<img src ="http://www.blogjava.net/welkinwwl/aggbug/180141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/welkinwwl/" target="_blank">welkin</a> 2008-02-16 02:08 <a href="http://www.blogjava.net/welkinwwl/articles/180141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中的继承(一)</title><link>http://www.blogjava.net/welkinwwl/articles/180140.html</link><dc:creator>welkin</dc:creator><author>welkin</author><pubDate>Fri, 15 Feb 2008 17:22:00 GMT</pubDate><guid>http://www.blogjava.net/welkinwwl/articles/180140.html</guid><wfw:comment>http://www.blogjava.net/welkinwwl/comments/180140.html</wfw:comment><comments>http://www.blogjava.net/welkinwwl/articles/180140.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/welkinwwl/comments/commentRss/180140.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/welkinwwl/services/trackbacks/180140.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;在javascript中不存在面向对象中的继承关系，我们可以通过很多种手段来实现继承机制，先看一个简单的例子：<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #008000">//</span><span style="color: #008000">基类Person</span><span style="color: #008000"><br />
<img id="Codehighlighter1_36_129_Open_Image" onclick="this.style.display='none'; Codehighlighter1_36_129_Open_Text.style.display='none'; Codehighlighter1_36_129_Closed_Image.style.display='inline'; Codehighlighter1_36_129_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_36_129_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_36_129_Closed_Text.style.display='none'; Codehighlighter1_36_129_Open_Image.style.display='inline'; Codehighlighter1_36_129_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Person(name,age)</span><span id="Codehighlighter1_36_129_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name</span><span style="color: #000000">=</span><span style="color: #000000">name;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.age</span><span style="color: #000000">=</span><span style="color: #000000">age;<br />
<img id="Codehighlighter1_95_127_Open_Image" onclick="this.style.display='none'; Codehighlighter1_95_127_Open_Text.style.display='none'; Codehighlighter1_95_127_Closed_Image.style.display='inline'; Codehighlighter1_95_127_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_95_127_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_95_127_Closed_Text.style.display='none'; Codehighlighter1_95_127_Open_Image.style.display='inline'; Codehighlighter1_95_127_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.shout</span><span style="color: #000000">=</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_95_127_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">I'm&nbsp;a&nbsp;person.</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">Person子类Teacher</span><span style="color: #008000"><br />
<img id="Codehighlighter1_176_245_Open_Image" onclick="this.style.display='none'; Codehighlighter1_176_245_Open_Text.style.display='none'; Codehighlighter1_176_245_Closed_Image.style.display='inline'; Codehighlighter1_176_245_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_176_245_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_176_245_Closed_Text.style.display='none'; Codehighlighter1_176_245_Open_Image.style.display='inline'; Codehighlighter1_176_245_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Teacher(name,age)</span><span id="Codehighlighter1_176_245_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.temp</span><span style="color: #000000">=</span><span style="color: #000000">Person;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.temp(name,age);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">delete</span><span style="color: #000000">&nbsp;temp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
&nbsp;&nbsp;&nbsp;&nbsp;我们先定义了一个Person类（我习惯站在面向对象的角度来称呼它，当然，你可以称它为函数），含有两个属性name,age和一个方法shout，让Teacher类继承Person类的办法是为Teacher添加一个临时函数temp，先让temp指向Person这个构造函数，然后调用temp(name,age)时实际则是调用了Person(name,age)这个构造函数，这样就Teacher就继承了Person的所有属性和方法，最后只需删除temp这个临时函数即可。当然，如果你需要为Teacher添加新的方法或是重写Person的方法时，你可以在delete temp之后添加。<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;上面的例子也可以用call函数或apply函数实现，这样用起来更加简单：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">基类Person</span><span style="color: #008000"><br />
<img id="Codehighlighter1_36_129_Open_Image" onclick="this.style.display='none'; Codehighlighter1_36_129_Open_Text.style.display='none'; Codehighlighter1_36_129_Closed_Image.style.display='inline'; Codehighlighter1_36_129_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_36_129_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_36_129_Closed_Text.style.display='none'; Codehighlighter1_36_129_Open_Image.style.display='inline'; Codehighlighter1_36_129_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Person(name,age)</span><span id="Codehighlighter1_36_129_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_36_129_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name</span><span style="color: #000000">=</span><span style="color: #000000">name;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.age</span><span style="color: #000000">=</span><span style="color: #000000">age;<br />
<img id="Codehighlighter1_95_127_Open_Image" onclick="this.style.display='none'; Codehighlighter1_95_127_Open_Text.style.display='none'; Codehighlighter1_95_127_Closed_Image.style.display='inline'; Codehighlighter1_95_127_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_95_127_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_95_127_Closed_Text.style.display='none'; Codehighlighter1_95_127_Open_Image.style.display='inline'; Codehighlighter1_95_127_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.shout</span><span style="color: #000000">=</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_95_127_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_95_127_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">I'm&nbsp;a&nbsp;person.</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">Person子类Teacher</span><span style="color: #008000"><br />
<img id="Codehighlighter1_176_272_Open_Image" onclick="this.style.display='none'; Codehighlighter1_176_272_Open_Text.style.display='none'; Codehighlighter1_176_272_Closed_Image.style.display='inline'; Codehighlighter1_176_272_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_176_272_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_176_272_Closed_Text.style.display='none'; Codehighlighter1_176_272_Open_Image.style.display='inline'; Codehighlighter1_176_272_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Teacher(name,age)</span><span id="Codehighlighter1_176_272_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_176_272_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">this.temp=Person;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">this.temp(name,age);</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">delete&nbsp;temp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;Person.call(</span><span style="color: #0000ff">this</span><span style="color: #000000">,name,age);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
用apply实现只需将Teacher中Person.call(<span style="color: #0000ff">this</span><span style="color: #000000">,name,age);</span>换为Person.apply(this,[name,age]);
<img src ="http://www.blogjava.net/welkinwwl/aggbug/180140.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/welkinwwl/" target="_blank">welkin</a> 2008-02-16 01:22 <a href="http://www.blogjava.net/welkinwwl/articles/180140.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>