0

JScript.js という名前の JavaScript ファイルがあります。このファイルには、以下の関数が含まれています。つまり、ドットネット ページへの ajax 呼び出しです。

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 ファイルを非同期的にロードするコードです。

 (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);
})();

しかし、ファイルをページに含めると、ファイルが実行され、正常に実行されます

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

2 に答える 2

0

とにかく、Farhan Ahmadはすでにそれに答えています.document.readyは、ページをロードしてdomが準備されたときにのみ起動するため、まず次のようにJScript.jsします

alert('jscript.js called');

function AddTag() {...}

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

次に$.getScript、ファイルをロードして呼び出すためにmyReadyFunc()使用しますajax

$.getScript("JScript.js", function(){
    alert("Script loaded and executed.");
    myReadyFunc();
});

参考: こちら。

于 2012-05-07T19:29:26.247 に答える
0

これを行うには、 .getScript() jQuery 関数を使用できます。

$.getScript("JScript.js", function(){
   alert("Script loaded and executed.");
   // here you can use anything you defined in the loaded script
});
于 2012-05-07T19:16:27.623 に答える