- 程序有所改变。发帖如还有问题请报告
- 【征集】西西河的经济学,及清流措施,需要主动参与者,『稷下学宫』新认证方式,24年网站打算和努力目标
主题:【原创】AJAX在西西河的一个应用简析 -- 铁手
Asynchronous JavaScript and XML ==> AJAX
关于AJAX的历史和一些应用以及实现机理,可以在GOOGLE里很容易的查找到,这里就不多说。只是简单的说明一下它目前在西西河的第一个应用,以及在使用过程中所碰到的问题,并请熟悉的朋友讨论指点一下。
AJAX的机理,说起来很简单,就是在 JAVACRIPT 中直接和服务器取得联系,把相关内容拿回到客户端,然后把零件一个个拆下来,再分别放到当前页面中合适的地方去。
最核心的部分,就是在JAVASCRIPT中实现静悄悄获取页面内容的的功能模块。
这个功能,在非IE的浏览器中很容易实现,因为这些浏览器里都内置这个模块。用以下的语句,可以得到这个功能模块。
if (window.XMLHttpRequest) {
zHTTP_Req = new XMLHttpRequest();
if (zHTTP_Req.overrideMimeType) {
zHTTP_Req.overrideMimeType("text/xml");
}
}
如果是IE浏览器,则需要ActiveXObject的支持,可以用以下语句得到
if (window.ActiveXObject){
try{
zHTTP_Req = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
try{
zHTTP_Req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {}
}
}
在得到这个打开后门偷偷交流的功能模块后(在这里是 zHTTP_Req),需要做的事情就是告诉这个模块在什么情况下做什么事情。这个是通过事件驱动来实现,具体的说,就是给这个模块的 onreadystatechange 事件定义一个函数。
function IfYouClickMeIWillKickYouBack{ // 用来对某个BUTTON点击做反应的函数
zHTTP_Req.onreadystatechange = function(){
if (zHTTP_Req.readyState == 4) {
if (zHTTP_Req.status == 200) {
var zlTmpV = zHTTP_Req.responseXML.getElementsByTagName("UPInfo")[0].childNodes[0].nodeValue; //XML的格式
。。。
。。
//zlDobj.innerHTML = zHTTP_Req.responseText; //文本方式得到内容
}
}
}
zHTTP_Req.open("GET", url, true); //我要看到某个页面的内容。
zHTTP_Req.send(null);
}
上面这段里,在提出要得到某个页面的内容的请求后,这个功能模块不断检测请求是否得到响应,内容是否正常返回。
正常返回后,可以有两种方式来得到所请求的内容。如果是简单的文本,可以用 zHTTP_Req.responseText ,如果是XML格式的,则需要相应的处理,来得到分类的内容。
西西河目前的一个简单AJAX应用,是实现在论坛首页最下面的【发贴信息】这个链接里。FIREFOX,SAFARI里面都没有任何问题,但是在IE里面,有时候可以有时候不可以,邪门的很。
还有一个问题,我原本是想用简单的文本方式,也就是在所请求的URL里,把内容都格式好以后(包括HTML 标签符号)输出,希望能够使用 responseText 来直接放到页面某个位置,结果所有中文都成为????的形式,而英文、数字等则没有显示问题。
后来不得以,只能使用 responseXML 来实现。只是,对XML也不是很熟悉。河里的XML FEED,也是用了尽可能简单的方式。
如果有人能够解决 responseText 中文内容乱码的问题的话,事情就会简单很多,西西河里很多地方也可以应用一下。
- 相关回复 上下关系8
【原创】AJAX在西西河的一个应用简析
🙂试一下: 1 landkid 字474 2006-05-10 11:11:32
🙂多谢多谢。这个问题前面已经解决了。的确是和你说的一样 铁手 字54 2006-05-10 22:16:08
🙂抑或是: landkid 字2020 2006-05-10 11:13:06
charset? 魔法胖子 字292 2005-10-14 13:24:52
这个不清楚 风雨梧桐 字166 2005-10-17 11:04:01
因为是想直接输出需要的内容,所以是没有头部字符集的设定 铁手 字151 2005-10-16 23:59:19
不是HTML里的head 魔法胖子 字125 2005-10-17 10:24:43