浏览 356 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-12-17
一般来说为了复用xmlhttp异步调用代码都会进行简单的封装,比如:
function xmlhttp_request( url, onready ) {
var xhr= new XMLHttpRequest();
xhr.onreadystatechange = function() {
if ( xhr.readyState == 4 ) {
eval( onready );
}
};
xhr.open( "GET", url, true );
xhr.send( null );
}
onready是一个约定好接受XMLHttpRequest或者XMLHttpRequest.responseXML对象作为参数的函数名字符串,比如:
function print( responseXML ) {
document.write( responseXML );
}
xmlhttp_request( "http://www.sina.com.cn", "print(xhr.responseXML)" );
这样如果在print回调函数中需要附带几个其他参数,如果只是简单的string或者int,也可以直接放在onready里,比如:
function print2( output_id, responseXML ) {
document.getElementById(output_id).innerHTML = responseXML;
}
xmlhttp_request( "http://www.sina.com.cn", "print2('id1',xhr.responseXML)" );
xmlhttp_request( "http://news.sina.com.cn", "print2('id2',xhr.responseXML)" );
问题是如果需要给print回调函数转递一个对象参数该如果做?比如我期望有这么一个回调函数:
function print3( Obj, responseXML ) {
Obj.innerHTML = responseXML;
}
xmlhttp_request()里应该怎么实现传递一个对象给回调函数? 有点啰嗦,希望我已经表达清楚了。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-12-17
补习了一下closure知识,自问自答:
function xmlhttp_request( url, onready ) { var xhr= new XMLHttpRequest(); xhr.onreadystatechange = function() { if ( xhr.readyState == 4 ) { onready( xhr.responseXML ); } }; xhr.open( "GET", url, true ); xhr.send( null ); } function print3( Obj, responseXML ) { Obj.innerHTML = responseXML; } var obj = document.getElementById( "id" ); xmlhttp_request( "http://www.sina.com.cn", function(xml){ print3(obj,xml); } ); |
|
| 返回顶楼 | |



