在我的应用程序中,我正在使用Ext.Ajax.request
加载我用eval
执行的脚本。如何让JavaScript代码执行等待,直到带有脚本的AJAX请求被加载并执行为止?
的问题是,因为要花费时间,其之后执行AJAX请求来完成的,代码需要其在通过AJAX装载在脚本变量。在这个例子中,我展示了这是怎么回事。我如何更改此代码,以便AJAX之后的JavaScript执行等待,直到AJAX调用中的脚本已被加载并执行为止?
testEvalIssue_script.htm:
<script type="text/javascript">
console.log('2. inside the ajax-loaded script');
</script>
main.htm中:
<html>
<head>
<script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ext/ext-all-debug.js"></script>
<script type="text/javascript">
function loadViewViaAjax(url) {
Ext.Ajax.request({
url: url,
success: function(objServerResponse) {
var responseText = objServerResponse.responseText;
var scripts, scriptsFinder=/<script[^>]*>([\s\S]+)<\/script>/gi;
while(scripts=scriptsFinder.exec(responseText)) {
eval.call(window,scripts[1]);
}
}
});
}
console.log('1. before loading ajax script');
loadViewViaAjax('testEvalIssue_script.htm');
console.log('3. after loading ajax script');
</script>
</head>
<body>
</body>
</html>
输出:
1. before loading ajax script
3. after loading ajax script
2. inside the ajax-loaded script
我怎样才能得到的输出是正确的顺序,像这样:
1. before loading ajax script
2. inside the ajax-loaded script
3. after loading ajax script
把2.哪里3.是和放3.哪里2.是? – 2011-03-18 16:06:11
AJAX请求完成后调用函数,并向用户显示“加载..”消息? – Kevin 2011-03-18 16:07:25