论坛首页 Web前端技术论坛

AJAX三言两语

浏览 11863 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-06-27  
这里的ajax可不是大名鼎鼎的ajax俱乐部, 这四个字母在这里Asynchronous JavaScript and XML的缩写。通俗地描述这项技术就是:用 JavaScript 向服务器获取数据,然后更新网页的局部,而不是刷新整个网页。
这项技术非常适合用来开发以浏览器为客户端的系统的界面,使用ajax给用户带来的更好的体验,他们不会感觉到用浏览器开发的客户端与桌面程序有什么差别。
ajax使用了比较多的javacript,并需要访问很多dom对象,这常常给跨浏览器访问带来困扰。但假如你小心应对,还是容易解决这个问题的。比如,你想从服务器段获得一些数据,你必然要用到xmlhttp,为了让程序浏览器无关,你可以这样创建xmlhttp对象:
//for IE
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}

//for firefox
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  xmlhttp = new XMLHttpRequest();
}


在很多的ajax范例中,开发者都是用xmlhttp从服务器端获得一个xml数据,然后转换成javascript可触及的对象,再用js绘制到document中。但我觉得这并非唯一选项,我甚至觉得是多此一举!为什么不直接传递js对象呢?在我开发的系统中,xmlhttp从服务器上获得的是代表js对象的字符串。假如我要传送一个人员列表,我会在服务器上输出:
[{id:1,name:"hexiaodong"},{id:2,name:"mary"},{id:3,name:"name"},...]}

然后在浏览器上用js获得这个字符串所代表的对象:
var returned = xmlhttp.responseText;
var obj = eval(returned );
接着,你就可以这样访问:
var person1 = obj[0]; var person2 = obj[1];
alert(person1.id);
alert(person1.name);

我觉得这样做比传递xml文档直接一些,不必通过转换可以让js直接访问数据,而且是通过对象导航来访问的,爽一个字。

ajax最后一环,就是通过dom对象绘制界面,这方面我也不是很精通,每次对着msdn画瓢呗。
   发表时间:2005-06-27  
我对AJAX不了解,呵呵

不过对你的论点有点疑问

假设,用户觉得客户端用网页不爽,想换成Applet或Flash之类的咋办呢?
0 请登录后投票
   发表时间:2005-06-27  
Bill Gates 写道
我对AJAX不了解,呵呵

不过对你的论点有点疑问

假设,用户觉得客户端用网页不爽,想换成Applet或Flash之类的咋办呢?


好问题!

假如用Applet的话,接收jsObject是没有问题的。mozilla提供了java版的js引擎,还提供了c++版的js引擎。你可以搜索一下rhino项目,使用java语言的客户端完全可以用这个引擎来解析jsObject,从而访问其中包含的各种对象。我不大清楚Flash是否能够使用这个引擎,但是感觉flash应该和js有很强交互能力的,它应该已经内建了js引擎的。不过,我没有尝试过这种用法。
0 请登录后投票
   发表时间:2005-06-27  
用xml而不用字符串,我想是有这些理由:
中文字符问题;
xml更容易作为标准,可以携带元数据;
既然是ajaX,自然就是要用xml。
0 请登录后投票
   发表时间:2005-06-27  
Bill Gates 写道
我对AJAX不了解,呵呵

不过对你的论点有点疑问

假设,用户觉得客户端用网页不爽,想换成Applet或Flash之类的咋办呢?


http://forum.iteye.com/viewtopic.php?t=13995

这方面我的思路是根据客户端的请求,服务器端动态判断,自动切换成客户端需要的格式,如xml,js,perl,php,beanshell等。
需求一直会变化、所以从来就没有one fit all 的解决方案,让客户端跟着变,还是让服务器端跟着变,就看我们怎么选择了。
0 请登录后投票
   发表时间:2005-06-27  
alexwei 写道
用xml而不用字符串,我想是有这些理由:
中文字符问题;
xml更容易作为标准,可以携带元数据;
既然是ajaX,自然就是要用xml。


xml也是字符串,而且还必须在这种字符串里面再指定一次编码类型。如果存在中文问题,那么在xml中,只会更复杂,而不是相反。

另外,我觉得简单直接的显得更加自然。
0 请登录后投票
   发表时间:2005-06-29  
JSON是JavaScript语言标准的一部分,直接用它来传递数据我认为是一个很好的
方案,

JSON-RPC-Java - http://oss.metaparadigm.com/jsonrpc/

SWATO - https://swato.dev.java.net/

都是利用这个来作为传输手段的。
0 请登录后投票
   发表时间:2005-07-12  
那么把大量数据传到服务器用什么呢,难道还是用url。我觉得ajax正如斑竹说得他远不止xmlhttp,比如要是rmi这样的实现,估计还是要用xml的。
不过楼主的想法很不错,我就没有想到,在一些简单应用中确实很好
0 请登录后投票
   发表时间:2005-07-12  
顺便建议楼主能够好好理解一下xml,楼主肯定没有xml方面的应用经验,xml是改变思想的一样技术,而不同于一般的语言或技术。个人的一点忠告,没有其他意思。
0 请登录后投票
   发表时间:2005-07-21  
ops2000 写道
顺便建议楼主能够好好理解一下xml,楼主肯定没有xml方面的应用经验,xml是改变思想的一样技术,而不同于一般的语言或技术。个人的一点忠告,没有其他意思。


我在2001年的时候就用xml了,你的肯定太武断了吧。xml不是银弹啊,好用就用,不好用就不用。很多场合xml能实现,其他技术也能实现,这种情况下,希望你多一些理智的分析,而不是起哄。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics