【问题标题】:Place ajax response when script is done downloading脚本下载完成后放置 ajax 响应
【发布时间】:2012-06-10 02:18:37
【问题描述】:

我有一个简单的网站,它使用 ajax 抓取 html 并将其放置在某个 div (AjaxPlaceHolder) 中。

例如这是我的网页:

<html>

    <body>
           // some html...

           <div id="AjaxPlaceHolder"></div>

    </body>

    <div id="footer"></div>

</html>

现在我的问题是,当我使用 ajax 获取 html 时,我会得到类似:

<script type="text/javascript" src="js/someJsFile.js"></script>
<table>html content</table>
// more html

注意这一行:

<script type="text/javascript" src="js/someJsFile.js"></script>

在浏览器下载该文件 (someJsFile.js) 之前,我不想放置 html 内容。我怎么能知道浏览器何时下载该脚本?我知道我可以将 someJsFile.js 内容放在那里并将其包裹在 &lt;script type="text/javascript"&gt; 标签周围,但如果我可以将 .js 文件分开,那就太好了。

编辑:

换句话说,这就是我想做的事情:

使用 ajax 获取 html。不要渲染 html(同时将它放在隐藏的 div 中)直到文档完成下载必要的图像和脚本

【问题讨论】:

    标签: asp.net ajax


    【解决方案1】:

    您可以将 javascript 文件加载与 html ajax 加载的其余部分分开。

    如果你分开它,你可以同步加载外部脚本,这样你就可以确保它们首先加载。

    在简单的 javascript 中,您在打开时设置同步标志。

    function getFile(url, passData) {
      if (window.XMLHttpRequest) {              
        AJAX=new XMLHttpRequest();              
      } else {                                  
        AJAX=new ActiveXObject("Microsoft.XMLHTTP");
      }
      if (AJAX) {
        AJAX.open("POST", url, false);
        AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        AJAX.send(passData);
        return AJAX.responseText;                                         
      } else {
         return false;
      }                                             
    }
    
    var fileFromServer = getFile('http://domain.com/scr.js', sendThisDataAsAPost);
    

    在 jQuery 中

    jQuery.ajax({
            type: "GET",
            url: url,
             async : false,
            success: callback,
            dataType: "script",
            cache: true
    });
    

    关于同步调用:http://www.hunlock.com/blogs/Snippets:_Synchronous_AJAX

    jQuery 调用:http://api.jquery.com/jQuery.ajax/

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    相关资源
    最近更新 更多