使用 Ajax.Updater() 类

  如果你的服务器的另一端返回的信息已经是 HTML 了,那么使用这个程序包中 Ajax.Updater 类将使你的生活变得更加得容易。用它你只需提供哪一个元素需要被 AJAX 请求返回的 HTML 填充就可以了,例子比我写说明的更清楚:
<script>
	function getHTML()
	{
		var url = 'http://yourserver/app/getSomeHTML';
		var pars = 'someParameter=ABC';
		
 
 
var myAjax = new Ajax.Updater( 'placeholder', url, { method: 'get', parameters: pars });
} </script> <input type=button value=GetHtml οnclick="getHTML()"> <div id="placeholder"></div>

你可以看到,这段代码比前面的例子更加简洁,不包括 onComplete 方法,但是在构造方法中传入了一个元素 id。 我们来稍稍修改一下代码来描述如何在客户端处理服务器段错误成为可能。

我们将加入更多的选项, 指定处理错误的一个方法。这个是用 onFailure 选项来完成的。我们也指定了一个 placeholder 只有在成功请求之后才会被填充。为了完成这个目的我们修改了第一个参数从一个简单的元素 id 到一个带有两个属性的对象,success (一切 OK 的时候被用到) 和 failure (有地方出问题的时候被用到) 在下面的例子中没有用到 failure 属性,而仅仅在 onFailure 处使用了 reportError 方法。

<script>
	function getHTML()
	{
		var url = 'http://yourserver/app/getSomeHTML';
		var pars = 'someParameter=ABC';
		
 
 
var myAjax = new Ajax.Updater( {success: 'placeholder'}, url, { method: 'get', parameters: pars, onFailure: reportError });
} function reportError(request) { alert('对不起,出错了。'); } </script> <input type=button value=GetHtml οnclick="getHTML()"> <div id="placeholder"></div>

如果你的服务器逻辑是连同 HTML 标记返回 JavaScript 代码,Ajax.Updater 对象可以执行那段 JavaScript 代码。为了使这个对象对待响应为 JavaScript,你只需在最后参数的对象构造方法中简单加入 evalScripts:true 属性。但是值得提醒的是,像这个选项名 evalScripts 暗示的,这些脚本会被执行,但是它们不会被加入到 Page 的脚本中。“有什么区别?”,可能你会这样问。我们假定请求地址返回的东东像这样:

<script language="javascript" type="text/javascript">
	function sayHi(){
		alert('Hi');
	}
</script>

<input type=button value="Click Me" οnclick="sayHi()">

如果你以前这样尝试过,你知道这些脚本不会如你所期望的那样工作,原因是这段脚本会被执行,但像上面这样的脚本执行并不会创建一个名叫 sayHi 的函数,它什么也不做。如果要创建一个函数,我们应当把代码改成下面这个样子:

<script language="javascript" type="text/javascript">
	
 
 
sayHi = function(){ alert('Hi'); };
</script> <input type=button value="Click Me" οnclick="sayHi()">

为什么我们在上面的代码中不使用 var 关键字来声明这个变量呢(指 sayHi),因为那样做创建出来的函数将只是当前脚本块的一个局部变量(至少在 IE 中是这样)。不写 var 关键字,创建出来的对象的作用域就是我们所期望的 window。

更多相关知识,请参看 Ajax.Updater 参考options 参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值