我有一个函数获取一个html文件并在页面上显示它,但我想告诉它在页面处理后也执行一个函数。除了我不知道如何用它传递数据。
这就是我现在所拥有的:
call_file('index.html', function(){
template_handler(
function(){ init_menu(); }
)}
);
}
这是这样处理的:
function call_file(url,func){
caller(url,function(){
if ( xmlhttp.readyState== 4 && xmlhttp.status== 200 ){
call_back_fileLoad(xmlhttp.responseText,func);
}
});
}
function call_back_fileLoad(result,func){
if(typeof(func) !== 'undefined'){
func(result);
} else {
return false;
}
}
function caller(url,cfunc){
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
问题是我不知道如何收到html&我想要同时执行的函数,因为它只返回一个数据到函数。
这就是我希望最终的功能如何行动:
function template_handler(data, func){
var d = document.getElementById('content');
d.innerHTML = '';
var div = document.createElement(div);
div.innerHTML = data;
d.appendChild(div);
func();
}
目前我不知道如何为call_file
正确传递数据,请帮助^ _ ^
答案 0 :(得分:1)
如我在上面的评论中所述:
“只需为您传递给call_file()
的回调函数定义一个参数,然后将该参数作为第一个参数传递给template_handler()
。就像这样:”
// `call_back_fileLoad()` passes the response, so receive it here
// --------------------------------v
call_file('index.html', function(data) {
// Then pass it on to the `template_handler()` invocation
// ----------------v
template_handler(data, function() {
init_menu();
});
});
顺便说一下,你可以摆脱最里面的匿名函数,然后传递init_menu
,因为它看起来好像不需要参数。
call_file('index.html', function(data){
template_handler(data, init_menu);
});
答案 1 :(得分:0)
怎么样
xmlhttp.onreadystatechange = (function(xmlhttp, url, somevar1, somevar2){
return function() {
cfunc.call(this, xmlhttp, url, somevar1, somevar2);
}
})(xmlhttp, url, somevar1, somevar2);