浏览 2198 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-09-12
在ajax.request中的onComplete的function中第一个是transport,但如果我要在ff下得到event对象,
我开始用bindAsEventListener,但不行,那样transport就变成event对象了,后来 我是这么实现的
function opt(evt){
new Ajax.Request(
'ajaxsubmit',{
parameters: "time=" + new Date().getTime(),
onComplete : function(transport){
alert(transport);
alert(evt);
}
})
}
使用了闭包,才能得到,不知道正确的方法因该是什么 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-09-12
bindAsEventListener会把参数付在后面的,试试看arguments[1]是不是XHR
|
|
| 返回顶楼 | |
|
时间:2007-09-13
谢谢楼上,我最后是这样实现的
Event.observe(window,'load',function(){
$('tx1').observe('click',function(event){
new Ajax.Request('ajaxsubmit',{
onComplete : function(transport,evt){
alert(transport);
alert(evt);
}.bindAsEventListener(this,event)
})
}.bind($('tx1')));
})
我也看了bindAsEventListener的源码,感觉在代码
Function.prototype.bindAsEventListener = function(object) {
var __method = this, args = $A(arguments), object = args.shift();
return function(event) {//这个event是null的
return __method.apply(object, [event || window.event].concat(args));
}
}
所以如果我不写成(this,event),那我在onComplete里边alert(arguments.length)是1,不是2 |
|
| 返回顶楼 | |
|
时间:2007-09-13
正确方法就是把你需要的event信息保存下来,然后用闭包访问。本身你的需求也就是在异步调用完成时能获得发起请求的事件的信息。
而你现在的方式过于复杂,代码意义也不对,只是恰好能达到你的需求而已。 |
|
| 返回顶楼 | |
|
时间:2007-09-13
回调函数要怎么获得event?
都没有触发事件,怎么可能有event? 在回调函数用bindAsEventListener没什么意义 直接用bind就行了 |
|
| 返回顶楼 | |
|
时间:2008-08-08
我在 IE中调试了半天,还是不可以,不知怎么回事, 在火狐中可以,在IE中就包脚本错误, 这两个浏览器对Ajax对象使用有什么不一样嘛????
|
|
| 返回顶楼 | |








