prototype.js轻量级WEB开发的首选ajax框架(三)
本文主要讲如何使用prototype.js中的Ajax进行一些小应用方面的开发,不讲Ajax原理。
在prototype.js中我以后会用到的有两个Ajax类,一个是Ajax.Request 别一个是Ajax.Updater。AjaxRequest继承自Ajax.Base。而Ajax.Updater继承自Ajax.Request ,说这些没有别的意思,主要是想让读者明白,随着继承的延续,类的功能也将特殊化。
我是个粗人不过讲那么多道理,就举个例子开始吧。哦,差点忘了说一件事,Ajax在普通浏览器如XP下是默认不能跨域请求,而在2003下不加入可信站点是不可使用的。所以有些应用不能一味地使用Ajax实现,不然呵呵,记得给自己留后路,像Gmail,它默认使用Ajax实现,但如果系统不能执行Ajax的话就提示用户可以使用普通HTML实现。还有所谓跨域就是如我的域名是www.LvJiyong.com 我可以使用Ajax请求www.LvJiyong.com 的所有允许访问的资源,而假如我想访问www.1818city.com 域名下的资源浏览器将会拒绝,有些人想用Ajax实现文件上传,可行性就更夸张,必须把安全级别降到最低才行。另:在本地测试时是允许访问任何域下的资源的,不要企图在网站上直接使用Ajax取得其它网站下的资料,在ASP里我们可以使用服务端的XMLHTTP实现,而在.NET下允许的方法更多,在此不说了,又开始废话。
好,现在开始举例,先讲一下特殊中的特殊Ajax.Updater。不知道读者有没有尝试注册本BLOG的会员,验证码就是使用Ajax.Updater去实现的,在页面载入的时候注册一个事件来监视验证码输入框的变化,当输入的长符符合验证码长度时,自动触发向Ajax.Updater验证验证码的页面发出请求,系统如果检测验证码错误,则返回“验证码错误”,否则返回空值,表示正确。而Ajax.Updater的应用灵巧的就是在这种情况下的使用(只需要显示返回值的情况)。
<script>
function getHTML()
{
var url = 'http://www.lvjiyong.com/1818city/Default.aspx';
var pars = 'test=lvjiyong.com';
var myAjax = new Ajax.Updater(
'placeholder',
url,
{
method: 'get',
parameters: pars
});
/*
使用GET方法主要是传递少数的参数,记住只适合传送少量的参数传下参数,在'http://www.lvjiyong.com/1818city/Default.aspx'是没有对参数进行处理的,只是显示如何传递参数
传递参数分为Post与GET大家应该都是知道的,当Post时就用Request.Form["参数名"]取值,Get时用Request.QueryString["参数值"]取值。处理回数据后响应请求,响应的文本内容将会自动填充到ID为placeholder的容器中。
使用Post提交格式如:(主要注意是传递Post数据,当然也可以在Post时在url中写上参数传递querystring值。)
var postData = "内容";
var myAjax = new Ajax.Updater(
'placeholder',
url,
{
method: 'post',
postBody:postData});
*/
}
</script>
<input type=button value=GetHtml onclick="getHTML()">
<div id="placeholder"></div>
默认情况下使用这种方法请求即可,但要再细微点可以多设置参数,这个将在以后使用Ajax.Request时深入说一下。
开始胡敲了,先停住吧,最近精神状态一直不好.明天讲一下参数,并说下怎么实现当Ajax请求发生时出现"Loading...",而成功后自动消失.