标签存档: Ajax

[AJAX] ASP中使用GB2312编码时处理乱码问题

在AJAX开发中,编码问题往往是令开发者比较头痛的,特别是在编码不是UTF-8的情况下。虽然这篇文章是讲的怎么处理乱码问题的,但是我还是推荐在做AJAX开发的时候使用UTF-8编码,这样可以避免很多问题。

AJAX中,XMLHttpRequest发送数据和接收数据的时候往往都是使用UTF-8来处理数据的,也就是说,虽然程序是使用GB2312作为编码的,但是XMLHttpRequest还是以UTF-8来处理,这样就导致乱码问题了。

所以如果要解决乱码问题,可以通过指定文件编码来解决。指定文件编码后,XMLHttpRequest就会使用指定的编码来处理文件,这样,碰到GB2312编码的文件时,XMLHttpRequest还是能以GB2312编码来读取文件,这样就能避免乱码了。

要设置编码方式,可以发送ContentType头来指定。

在ASP里,要设置ContentType,可以用以下语句:

  • Response.ContentType = “text/html; charset=gb2312”

在ContentType里,charset就指定了文件编码。

一般在AJAX客户端需要处理和显示中文数据时候,最好在服务端设置文件编码,即设置ContentType。如果服务端不知道是否会返回中文数据,那么还是设置一下编码的好。

这样处理AJAX中乱码的方法并不局限于ASP,比如在PHP里也可以使用header函数来设置ContentType。其实理论上只要能在服务端设置HTTP请求的header,就能通过这样的方式来解决乱码问题。

就这样。

AJAX应用之草稿自动保存

相信用过Gmail的人都知道Gmail有一个草稿自动保存的功能,每过一段时间,Gmail都会自动保存邮件草稿,这样在一些突发情况下就能快速地恢复工作,免得写了半天的邮件眨眼之间就没有了。在学了AJAX之后,我也给自己的blog加上了这个功能。当然,这个应用并不只限于blog上,应该说还是比较通用的。

PS.为了开发的方便,我用了一个自己写的AJAX类,具体内容和下载在这里

演示地址

仍旧以代码加注释的方式来说明怎么编写。

首先是表单填写页面,用一个ID为AutoSaveMsg的DIV来显示返回信息,并且用一个ID为Draft_AutoSave的CheckBox来确定是否进行自动保存,然后将Textarea的ID命名为message。同时为了应对多用户同时使用的需要,加上用户名,每个用户的草稿分开保存。为了说明方便,我把一些修饰性的东西去掉,这样看起来比较明了:

  • AJAX应用之草稿自动保存<br />
  • <!– 用户名默认为NONAME –>
  • 用户名:<input type=”text” name=”memName” id=”memName” size=”20″ value=”NONAME” />&nbsp;&nbsp;&nbsp;&nbsp;
  • <!– 在自动保存选项的onclick事件中调用自动保存状态设置函数 –>
  • <input onclick=”SetAutoSave();” type=”checkbox” id=”Draft_AutoSave” value=”1″ checked=”true”  />自动保存?<br />
  • 内容:
  • <textarea id=”message”></textarea><br />
  • <!– AutoSaveMsg显示返回信息 –>
  • <div id=”AutoSaveMsg”></div>
  • <input type=”submit” value=”提交内容” />&nbsp;&nbsp;
  • <!– 调用函数恢复最后保存的草稿 –>
  • <input type=”button” onclick=”AutoSaveRestore();” value=”恢复最后保存的草稿” />
  • </div>
  • </div>
  • <!– 将JS代码放在所有对象之后,以免在页面未加载完成时出现对象不存在的错误 –>
  • <!– AJAX类 –>
  • <script type=”text/javascript” src=”ajaxrequest.js”></script>
  • <!– 自动保存代码 –>
  • <script type=”text/javascript” src=”autosave.js”></script>

接下来是autosave.js

  • // 首先设置全局变量
  • // 要保存的内容对象FormContent
  • var FormContent=document.getElementById(“message”);
  • // 显示返回信息的对象
  • var AutoSaveMsg=document.getElementById(“AutoSaveMsg”);
  • // 用户名
  • var memName=document.getElementById(“memName”).value;
  • // 自动保存时间间隔
  • var AutoSaveTime=60000;
  • // 计时器对象
  • var AutoSaveTimer;
  • // 首先设置一次自动保存状态
  • SetAutoSave();
  • // 自动保存函数
  • function AutoSave() {
  • // 如果内容或用户名为空,则不进行处理,直接返回
  • if(!FormContent.value||!memName) return;
  • // 创建AJAXRequest对象,详细使用见文章开始的链接
  • var ajaxobj=new AJAXRequest;
  • ajaxobj.url=”autosave.asp”;
  • ajaxobj.content=”memname=”+escape(memName)+”&postcontent=”+escape(FormContent.value);
  • ajaxobj.callback=function(xmlObj) {
  • // 显示反馈信息
  • AutoSaveMsg.innerHTML=xmlObj.responseText;
  • }
  • ajaxobj.send();
  • }
  • // 设置自动保存状态函数
  • function SetAutoSave() {
  • // 是否自动保存?
  • if(document.getElementById(“Draft_AutoSave”).checked==true)
  • // 是,设置计时器
  • AutoSaveTimer=setInterval(“AutoSave()”,AutoSaveTime);
  • else
  • // 否,清除计时器
  • clearInterval(AutoSaveTimer);
  • }
  • // 恢复最后保存的草稿
  • function AutoSaveRestore() {
  • // 创建AJAXRequest对象
  • var ajaxobj=new AJAXRequest;
  • // 提示用户正在恢复
  • AutoSaveMsg.innerHTML=”正在恢复,请稍候……”
  • ajaxobj.url=”autosave.asp”;
  • ajaxobj.content=”action=restore&memname=”+escape(memName);
  • ajaxobj.callback=function(xmlObj) {
  • // 提示用户恢复成功
  • AutoSaveMsg.innerHTML=”恢复最后保存成功”;
  • // 如果内容为空则不改写textarea的内容
  • if(xmlObj.responseText!=””) {
  • // 恢复草稿
  • FormContent.value=xmlObj.responseText;
  • }
  • }
  • ajaxobj.send()
  • }

最后是autosave.asp,用于在后台保存草稿:

  • <%@LANGUAGE=”VBscript” CODEPAGE=”65001″%>
  • <% Option Explicit %>
  • <%
  • ‘ 语言为VBScript,编码为UTF-8,要求变量声明
  • ‘ 出现错误则忽略,继续执行
  • On Error Resume Next
  • ‘ 定义一些变量
  • Dim PostContent,memName,action,objStream
  • ‘ 获取操作,是保存草稿还是恢复草稿
  • action=Request.Form(“action”)
  • ‘ 获取用户名
  • memName=Request.Form(“memname”)
  • ‘ 获取草稿内容
  • PostContent=Request.Form(“postcontent”)
  • IF action=”restore” Then
  • ‘ 恢复草稿,如果用户名不为空则进行恢复操作
  • IF memName<>Empty Then
  • ‘ 使用 ADODB.Stream 来进行文件操作
  • Set objStream = Server.CreateObject(“ADODB.Stream”)
  • With objStream
  • .Type = 2
  • .Mode = 3
  • .Open
  • ‘ 文件名为 autosave_ + 用户名 + .txt
  • .LoadFromFile(Server.MapPath(“autosave_”&memName&”.txt”))
  • .Charset = “utf-8”
  • ‘.Position = 0
  • PostContent = .ReadText()
  • .Close
  • End With
  • Set objStream = NoThing
  • ‘ 输出草稿
  • IF PostContent<>”” Then Response.Write(PostContent)
  • End IF
  • Else
  • ‘ 保存草稿,如果草稿内容和用户名均不为空则进行保存操作
  • IF PostContent<>Empty AND memName<>Empty Then
  • ‘ 使用 ADODB.Stream 来进行文件操作
  • Set objStream = Server.CreateObject(“ADODB.Stream”)
  • With objStream
  • .Type = 2
  • .Mode = 3
  • .Open
  • .Charset = “utf-8”
  • .Position = objStream.Size
  • .WriteText= PostContent
  • .SaveToFile Server.MapPath(“autosave_”&memName&”.txt”),2
  • .Close
  • End With
  • Set objStream = NoThing
  • ‘ 输出保存是否成功信息
  • If Err.Number=0 then
  • Response.Write(“最后于 “&Now()&” 自动保存成功”)
  • Else
  • Response.Write(“最后于 “&Now()&” 自动保存失败,错误号:”&Err.Number&”,错误描述:”&Err.Dscription)
  • End If
  • End IF
  • End IF
  • %>

至此,AJAX草稿自动保存完成了。

一个简单的AJAX请求类

给blog加上无刷新搜索和即时验证检测后,又看了下代码,感觉太过麻烦,就把XMLHttpRequest请求封装到一个类里面,用起来方便多了,不用记那么多代码,什么创建XMLHttpRequest对象什么的,这部分代码也是重用性比较高的~已经打包,在日志的末尾下载。

要看效果的话点开侧边栏里的日志搜索,里面有一个无刷新搜索,就是了,或者在阅读日志或留言簿里的注册码那里有即时检测,如果不输入验证码或者输错了验证码,输入框都会变红的^_^

类名:AJAXRequest

创建方法:var ajaxobj=new AJAXRequest;,如果创建失败则返回false

属性:method  –  请求方法,字符串,POST或者GET,默认为POST

url         –  请求URL,字符串,默认为空

async     –  是否异步,true为异步,false为同步,默认为true

content –  请求的内容,如果请求方法为POST需要设定此属性,默认为空

callback  – 回调函数,即返回响应内容时调用的函数,默认为直接返回,回调函数有一个参数为XMLHttpRequest对象,即定义回调函数时要这样:function mycallback(xmlobj)

方法:send     –  发送请求,无参数

一个例子:

  • <script type=”text/javascript” src=”ajaxrequest.js”></script>
  • <script type=”text/javascript”>
  • var ajaxobj=new AJAXRequest;    // 创建AJAX对象
  • ajaxobj.method=”GET”;   // 设置请求方式为GET
  • ajaxobj.url=”default.asp”  // URL为default.asp
  • // 设置回调函数,输出响应内容
  • ajaxobj.callback=function(xmlobj) {
  • document.write(xmlobj.responseText);
  • }
  • ajaxobj.send();    // 发送请求

点击AJAX请求类压缩包

AJAX初体验之实战篇——打造博客无刷新搜索

如果你对AJAX不是很了解,可以先看看这篇教程的前篇《AJAX初体验之上手篇》

现在博客很流行,相信应该上网时间稍微长点的朋友都会在这或者在那的有一个自己的博客。对于一些有一定能力的朋友,可能更喜欢自己去下载一个博客程序来架设一个自己的博客,而不是使用一些博客网站提供的服务。而大部分博客程序所带的搜索功能是提交查询关键字到搜索页面,然后在后台生成搜索结果,再呈现给用户,这过程之中浪费了一些带宽,如博客的侧边栏。要节约这一些带宽,我们可以用AJAX来打造自己的无刷新日志搜索。

在本篇教程中,数据库的表名和日志查看页面以L-Blog为例,因为我的博客程序是从L-Blog修改而来^_^。

本教程中的例子已经通过实际测试,可以直接在L-BlogFBS中使用。当然,要真正应用的话还是需要做一些美化及完善的。

在数据库中日志内容数据表名为blog_Content,其中日志ID为log_ID,日志标题为log_Title,日志查看页面为blogview.asp,参数为日志logID。有了这些资料,就可以开始创建搜索结果的XML文档模板了。在显示搜索结果时,需要显示日志的标题,以及日志的ID来创建到查看日志的链接。

搜索结果模板sample.xml

  • <?xml version=”1.0″ encoding=”utf-8″?>
  • <blogsearch>
  •     <!– 每一个reslut就是一个搜索结果 –>
  •     <result>
  •         <!– 日志的ID –>
  •         <logid>1</logid>
  •         <!– 日志的标题 –>
  •         <logtitle>AJAX初体验之上手篇</logtitle>
  •     </result>
  • </blogsearch>

每个result就是一个搜索结果,为了处理没有找到相关内容的情况,我定义了当搜索结果为空时logid为#。

在完成XML文档模板之后,就可以用ASP来动态生成搜索结果需要的XML文档了。搜索的关键字采用POST方式来传递。

搜索结果输出ajaxsearch.asp

  • <!– #include file=”commond.asp” –>
  • <!– #include file=”include/function.asp” –>
  • <%
  • ‘ commond.asp为数据库连接文件
  • ‘ function.asp中有要用到的函数CheckStr
  • Dim Search_Word,XML_Result,rsSearch,sqlSearch
  • Set rsSearch=Server.CreateObject(“ADODB.RecordSet”)
  • ‘ 获取搜索关键字
  • Search_Word=CheckStr(Trim(Request.Form(“searchword”)))
  • ‘ XML文档头
  • XML_Result=”<?xml version=””1.0″” encoding=””utf-8″”?><blogsearch>”
  • IF Search_Word<>Empty Then
  •     ‘ 创建查询SQL语句
  •     sqlSearch=”SELECT log_ID,log_Title,log_Content FROM blog_Content WHERE log_Title”_
  • &” LIKE ‘%”&Search_Word&”%’ AND log_IsShow=True ORDER BY log_ID DESC”
  •     ‘ 打开记录集
  •     rsSearch.open sqlSearch,Conn,1,1
  •     ‘ 如果没有搜索结果就产生一个结果,logid为#,标志着没有搜索结果
  •     IF rsSearch.BOF AND rsSearch.EOF Then 
  •         XML_Result=XML_Result&”<result><logid>#</logid><logtitle /></result>” 
  •     End IF
  •     ‘ 循环输出搜索结果
  •     Do While Not rsSearch.EOF
  •         XML_Result=XML_Result&”<result><logid>”&rsSearch(“log_ID”)&”</logid><logtitle><![CDATA[“&rsSearch(“log_Title”)&”]]></logtitle></result>”  ‘ 循环输出每一个结果
  •         rsSearch.MoveNext
  •     Loop
  • Else
  •     ‘ 关键字为空,则返回无搜索结果
  •     XML_Result=XML_Result&”<result><logid>#</logid><logtitle /></result>”
  • End IF
  • XML_Result=XML_Result&”</blogsearch>”
  • ‘ 设置MIME Type为XML文档
  • Response.ContentType = “application/xml”
  • ‘Response.CharSet = “utf-8”
  • ‘ 输出搜索结果
  • Response.Write(XML_Result)
  • %>

有了后台搜索结果输出的部分,就可以开始写前台搜索的部分了。

首先需要的是给用户输入搜索关键字及显示搜索结果的地方,我用div来分别显示这两个部分:

ajaxsearch.htm

  • <!– 要用到JavaScript,外部链入 –>
  • <script type=”text/javascript” src=”ajaxsearch.js”></script>
  • <!– 用户输入部分 –>
  • <div>
  •     <!– 因为没有用form,所以要处理input的keydown事件。在用户按下回车后搜索 –>
  •     <input type=”text” id=”searchword” onkeydown=”if(event.keyCode==13) AjaxSearch();” /> 
  •     <!– 搜索按钮 –>
  •     <input type=”button” onclick=”AjaxSearch();” value=”搜索” />
  • </div>
  • <!– 搜索结果显示部分 –>
  • <div id=”search_result”>
  •     <!– 初始时提示用户输入搜索关键字 –>
  •     <ul><li>请输入关键字</li></ul>
  • </div>

完成了用户输入及结果输出的部分,就可以开始写最后的部分——客户端程序了。

首先是创建XMLHttpRequest对象,这部分代码不再多说,对AJAX稍有接触应该都看得懂这段代码,前篇教程中也有详细注释:

ajaxsearch.js(part1)

  • var xmlObj = false;
  • var xmlResult;
  • try {
  •     xmlObj=new XMLHttpRequest;
  • }
  • catch(e) {
  •     try {
  •         xmlObj=new ActiveXObject(“MSXML2.XMLHTTP”);
  •     }
  •     catch(e2) {
  •         try {
  •             xmlObj=new ActiveXObject(“Microsoft.XMLHTTP”);
  •         }
  •         catch(e3) {
  •             xmlObj=false;
  •         }
  •     }
  • }
  • if (!xmlObj) {
  •     alert(“XMLHttpRequest init Failed!”);
  • }

接下来是发送搜索请求部分:

ajaxsearch.js(part2)

  • function AjaxSearch() {
  •     var searchword;
  •     // 获取搜索关键字,并且进行URLEncode
  •     searchword=escape(document.getElementById(“searchword”).value);
  •     if(searchword==””) {
  •         // 如果关键字为空,则提示用户输入关键字
  •         document.getElementById(“search_result”).innerHTML=”<ul><li>请输入关键字!</li></ul>”;
  •         return;
  •     }
  •     // 给出提示,正在搜索
  •     document.getElementById(“search_result”).innerHTML=”<ul><li>正在加载,请稍候</li></ul>”;
  •     // 打开一个连接,采用POST
  •     xmlObj.open (“POST”, “ajaxsearch.asp”, true);
  •     // 设置请求头,表单内容格式为URLEncoded
  •     xmlObj.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded”);
  •     // 设置完成请求后响应函数
  •     xmlObj.onreadystatechange=function() {
  •         // 完成响应
  •         if(xmlObj.readyState==4) {
  •             // 状态正常
  •             if(xmlObj.status==200) {
  •                 // 设置xmlResult为搜索结果XML文档
  •                 xmlResult=xmlObj.responseXML;
  •                 // 调用AjaxShowResult()显示搜索结果
  •                 AjaxShowResult();
  •             }
  •         }
  •     }
  •     // 发送请求,内容为搜索的关键字
  •     xmlObj.send(“searchword=”+searchword);
  • }

最后是搜索结果的显示:

ajaxsearch.js(part3)

  • function AjaxShowResult() {
  •     var results,i,strTemp;
  •     // 获取搜索结果集合
  •     results=xmlResult.getElementsByTagName(“result”);
  •     // 用无序列表来显示搜索结果
  •     strTemp=”<ul>”;
  •     // 首先判断搜索结果是否为空
  •     if(results[0].getElementsByTagName(“logid”)[0].firstChild.data==”#”)
  •         // 是空,则显示没有符合的搜索结果
  •         strTemp=strTemp+”<li>无搜索结果</li>”;
  •     else
  •         // 循环输出每个搜索结果
  •         for(i=0;i<results.length;i++)
  •             strTemp = strTemp + “<li><a href=’blogview.asp?logID=” + results[i].getElementsByTagName(“logid”)[0].firstChild.data + “‘>” + results[i].getElementsByTagName(“logtitle”)[0].firstChild.data + “</a></li>”; 
  •     strTemp=strTemp+”</ul>”;
  •     // 显示搜索结果
  •     document.getElementById(“search_result”).innerHTML = strTemp
  • }

至此,一个完整的AJAX实例完成了。

几个经验:

1. 页面使用UTF-8编码,这样可以省却很多烦恼

2. 在获取搜索结果时,因为用的getElementsByTagName,返回的是一个集合,所以要在结果之后加上下标,如例子中的:

    results[i].getElementsByTagName(“logid”)[0].firstChild.data

3. 建议使用document.getElementById()来获取对象,而不要使用document.all这样的方法

参考资料:

1. 《AJAX初体验之上手篇》

2. 发布三个ajax相关的函数,包括无刷新提交表单等

下载文件 实例中的三个文件打包下载

[本日志由 xujiwei 于 2006-08-08 01:10 PM 编辑]

Comments (8), Views (51513), Pings (1), Leave a response!

AJAX初体验之上手篇

AJAX是这两年蛮热的东西,我也凑凑热闹,前些天去找了些教程学学,下面就按整个处理过程把自己学的东西写写,不过,因为是初学,所以有错误就请见谅啦,也欢迎指正,vipxjw#163.com。

PS.写完了之后看了下,结果再次验证自己写教程真是乱得可以,东说一块西说一块,条理不太清楚的说:)。

1.创建 XMLHttpRequest 对象

现在的浏览器有很多种,创建 XMLHttpRequest 的方法也不相同,所以为了兼容各种浏览器,在创建 XMLHttpRequest 时也应该考虑到各种浏览器的情况。目前主流的浏览器在Windows下有IE、Firefox及Opera,所以我们写的代码要尽量兼容这几个浏览器。在参考了一些资料后,我用下面的方法来创建 XMLHttpRequest 对象:

// 先定义一个变量,并赋初值为 false,方便后面判断对象是否创建成功
var xmlObj = false;
// 使用 try 来捕获创建失败,再换个方法来创建
try {
// 在 Mozilla 中使用这种方式来创建 XMLHttpRequest 对象
xmlObj=new XMLHttpRequest;
}
catch(e) {
try {
// 如果不成功,那么尝试在较新 IE 里的方式
xmlObj=new ActiveXObject(“MSXML2.XMLHTTP”);
}
catch(e2) {
try {
// 失败则尝试使用较老版本 IE 里的方式
xmlObj=new ActiveXObject(“Microsoft.XMLHTTP”);
}
catch(e3) {
// 还是失败,那么就认为创建失败……
xmlObj=false;
}
}
}
// 如果创建 XMLHttpRequest 对象失败,那么提醒访问者该页面可能无法正确访问
if (!xmlObj) {
alert(“XMLHttpRequest init Failed!”);
}
2.使用 XMLHttpRequest 来获取 XML 文档
在用 XMLHttpRequest 来获取 XML 需要注意这个文档必需和自己在同一个域中,我的理解是同一个域名之下,或者同一目录之中,如果不是就会出现“拒绝访问”的错误。在本地高度时,也必需运行一个 Web 服务器,而不能直接在浏览器里打开这个网页。

// 使用 open 方法来打开一个请求,这个方法有3个参数,分别是请求方式,请求文件的URL及同步方式(?不是很清楚具体叫什么来的:)
// 请求方式可以是 GET,POST,HEAD中的一种,因为我要获取文件,所以用 GET
// 请求文件的URL,直接用相对路径即可
// 同步方式,表示请求发出后是等待回应(false)还是继续执行下面的代码(true),即所谓异步了。AJAX的第一个A就是表示异步了,所以这里用 true
xmlObj.open (“GET”, “sample.xml”, true);
// 因为使用异步方式所以要在 XMLHttpRequest 对象的状态改变时做相应的处理
xmlObj.onreadystatechange=function() {
// 如果 XMLHttpRequest 的状态为4,应该是ready来的,那么继续处理
if(xmlObj.readyState==4) {
// 需要判断返回状态是否为200 OK,有些情况如文件不存在,就为返回404
if(xmlObj.status==200) {
// 一切OK,调用处理过程
DoMyXML();
}
}
}
// 发送请求,因为是GET,所以send的内容为null
xmlObj.send(null);

3.用ASP来创建XML文档3.用ASP来创建XML文档
为了动态显示的需要,就要用到动态网页了,我用的是ASP。

<%
‘ 修改头标识指明这是一个XML文档
Response.ContentType=”text/xml”
‘ ……
strXML=”<?xml versin=””1.0″” encoding=””gb2312″”?>”
‘ 这里就按XML的要求来输出数据库里的内容了
strXML=strXML&”…..”
‘ ……
Response.Write(strXML)
%>

4.处理XML文档
在获取了XML文档之后,就要从中获取需要的东西了,假如我从服务获取了下面的XML文档:

  • <?xml version=”1.0″ encoding=”gb2312″?>
  • <root>
  • <item>
  • <title>AJAX Study</title>
  • <content>Study AJAX</content>
  • </item>
  • </root>

我要的是title及content的内容,那么可以像下面这样做:

  • function DoMyXML() {
  • var xmlDoc,items,title,content;
  • // 先从XMLHttpRequest对象中得到XML文档
  • xmlDoc=xmlObj.responseXML;
  • // 再得到items
  • items=xmlDoc.getElementsByTagName(“item”);
  • // 最后根据TagName来获取想要的内容
  • // 如果XML文档里有多个item,可以用数组的下标来表示第几个
  • title=items[0].getElementsByTagName(“title”)[0].firstChild.data;
  • content=items[0].getElementsByTagName(“content”)[0].firstChild.data;
  • }

好了,现在已经得到我想要的东西,可以把它们显示出来了。

5.输出处理结果

先假定有一个如下的HTML文档用来显示想要输出的内容:

  • <html>
  • <head>
  • <title>AJAX Study</title>
  • </head>
  • <body>
  • <div id=”mydisplay”></div>
  • </body>
  • </html>

  • 这里定义了一个ID为mydisplay的DIV容器用来显示输出内容,好了,再转到JS:
    • //…接DoMyXML;
    • //content=items[0]…..;
    • var strHTML;
    • // 先组织好要显示的内容
    • strHTML=”Item title: ” + title + “<br />Item content: ” + content;
    • // 获取目标容器,再设置它的innerHTML为要显示的内容
    • document.getElementById(“mydisplay”).innerHTML=strHTML;

  • OK,这些差不多是编写AJAX程序的基础,具体用就看个人发挥了,当然AJAX并不只这些,还有如果POST方法发送数据等,不过这个还没学过,所以只能讲这些了^_^。还是那句话,因为是初学,有错误在所难免,欢迎指正。