首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何异步加载包含ajax调用的javascript文件?

如何异步加载包含ajax调用的javascript文件?
EN

Stack Overflow用户
提问于 2012-05-07 19:10:48
回答 2查看 430关注 0票数 0

我有一个名为JavaScript的JScript.js文件,该文件在下面包含一个函数,即对点-net页面的ajax调用。

代码语言:javascript
运行
复制
alert('jscript.js called');

function AddTag() {
var htag = document.getElementById("hdntag").value.split('|');
var texttag = document.getElementById("taginput").value;

for (i = 1; i < htag.length; i++) {
    var onetag = htag[i].split(',');

    if (onetag[0] == texttag) {
        alert("Already Exist!!!");
        return false;
    }
}
$(document).ready(function () {
    $.ajax
                           ({
                               type: "POST",
                               url: "Checked.aspx/AddTag",
                               data: "{'TagName': '" + $('#taginput').val() + "'}",
                               contentType: "application/json; charset=utf-8",
                               dataType: "json",
                               async: true,
                               cache: false,
                               success: function (msg) {
                                   document.getElementById("hdntag").value += '|' + texttag + ',' + msg.d;
                                   Makeedittabletaghtml();
                               }
                           })
});
document.getElementById("taginput").value = "";

}

我试图异步地将这个JavaScript文件加载到页面中,但我只得到了警报,即‘jscript.js调用’,但是下面的函数不是异步加载JavaScript文件的代码。

代码语言:javascript
运行
复制
 (function() {
    var dsq = document.createElement('script');
    dsq.type = 'text/javascript';
    dsq.src = 'JScript.js';
    dsq.async = true;
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();

但是,当我将文件包含到页面中时,它会运行并执行良好。

代码语言:javascript
运行
复制
<script type="text/javascript" src="JScript.js"></script>
EN

回答 2

Stack Overflow用户

发布于 2012-05-07 19:16:27

您可以使用.getScript() jQuery函数来完成以下操作:

代码语言:javascript
运行
复制
$.getScript("JScript.js", function(){
   alert("Script loaded and executed.");
   // here you can use anything you defined in the loaded script
});
票数 0
EN

Stack Overflow用户

发布于 2012-05-07 19:29:26

Farhan已经回答了,无论如何,只有在加载页面和dom准备就绪时,document.ready才会触发,所以首先按如下所示进行JScript.js

代码语言:javascript
运行
复制
alert('jscript.js called');

function AddTag() {...}

function myReadyFunc(){
    $.ajax({
    ...
    ...
    });
}

然后使用$.getScript加载文件并调用您的myReadyFunc(),后者将调用ajax

代码语言:javascript
运行
复制
$.getScript("JScript.js", function(){
    alert("Script loaded and executed.");
    myReadyFunc();
});

参考: 这里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10487675

复制
相关文章

相似问题

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