在我的应用程序中,我使用Ext.Ajax.request加载我用eval执行的脚本。
问题是,由于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 scripthttps://stackoverflow.com/questions/5354641
复制相似问题