首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让make JavaScript代码在带有脚本的AJAX请求加载并执行之前一直等待?

如何让make JavaScript代码在带有脚本的AJAX请求加载并执行之前一直等待?
EN

Stack Overflow用户
提问于 2011-03-19 00:01:54
回答 4查看 57.8K关注 0票数 17

在我的应用程序中,我使用Ext.Ajax.request加载我用eval执行的脚本。

问题是,由于AJAX请求需要时间才能完成,因此随后执行的代码需要通过AJAX加载的脚本中的变量。在这个例子中,我展示了这种情况。如何更改这段代码,以便在AJAX之后执行JavaScript,直到装入并执行AJAX调用中的脚本?

testEvalIssue_script.htm:

代码语言:javascript
复制
<script type="text/javascript">
    console.log('2. inside the ajax-loaded script');
</script>

main.htm:

代码语言:javascript
复制
<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>

输出:

代码语言:javascript
复制
1. before loading ajax script
3. after loading ajax script
2. inside the ajax-loaded script

如何才能使输出的顺序正确,如下所示:

代码语言:javascript
复制
1. before loading ajax script
2. inside the ajax-loaded script
3. after loading ajax script
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5354641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档