进行异步调用以加载js文件无效?

时间:2013-12-30 09:10:02

标签: javascript jquery ajax

我有一个div,其中包含以下内容

<div id="xyz">
 <script src="https://seal.verisign.com/getseal?host_name=esewa.com.np&amp;size=S&amp;use_flash=YES&amp;use_transparent=YES&amp;lang=en"></script>.
</div>

加载脚本后,会返回一个flash文件并显示在div

现在我尝试按照以下方式加载相同的脚本

<div id="xyz">

    <script>
    $(document).ready(function(){
                 getVerisignCertificate();
        });
    </script>
</div>

功能体

function getVerisignCertificate(){
    scriptObject = document.createElement('script');
    scriptObject.type = 'text/javascript';
    scriptObject.async = true;
    $.ajax({
        type: "GET",
        url:"https://seal.verisign.com/getseal?host_name=esewa.com.np&amp;size=S&amp;use_flash=YES&amp;use_transparent=YES&amp;lang=en",
        dataType: "script",
        success: function(data) {
            scriptObject.src= data ;
            $(window).load(function(){
                $("head").append(scriptObject);      
            });
        }
    }); 
}

与远程服务器的连接已建立但是不显示flash文件。我到底错过了什么?

3 个答案:

答案 0 :(得分:2)

最有效,最快捷,最好的方法是使用Google的Analytics Async方法。

复制粘贴:

(function() {
  var as = document.createElement('script'); as.type = 'text/javascript'; as.async = true;
  as.src = ('https:' == document.location.protocol ? 'https://' : 'https://') + 'seal.verisign.com/getseal?host_name=esewa.com.np&amp;size=S&amp;use_flash=YES&amp;use_transparent=YES&amp;lang=en';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(as, s);
})();

有关此方法的更多信息,请访问Google's Analytics Development Overview

答案 1 :(得分:0)

您可能希望使用scriptObject.text=data;而不是scriptObject.src=data; 此外,您可能希望将其添加为id xyz $('#xyz').append(scriptObject);而不是head。

答案 2 :(得分:-1)

您可以这样加载脚本:

$("head").append("<script src='https://seal.verisign.com/getseal?host_name=esewa.com.np&amp;size=S&amp;use_flash=YES&amp;use_transparent=YES&amp;lang=en'>");