使用JQuery / AJAX </script>更新/插入<script>标记

时间:2013-10-16 18:52:39

标签: javascript jquery ajax

我正在尝试使用JQuery / AJAX更新/插入新标签。脚本标记中的URL是来自另一个域(Web服务器)的URL,我无法控制。 Web服务器提供的结果在iframe中返回(同样,我无法控制响应的格式)。

我尝试了以下两种解决方案(请注意,Click按钮仅用于测试目的)。

第一个解决方案:

$(document).ready(function () {
    $("button").click(function () {
        var NewScript = document.createElement('script');
        NewScript.type = 'text/javascript';
        NewScript.src = 'http://www.contactedurl.com/query&callback=?';
        $("#TDiv").append(NewScript);
    });
});

第二个解决方案:

$(document).ready(function () {
    $("button").click(function () {
        var NewScript = document.createElement('script');
        NewScript.type = 'text/javascript';
        NewScript.src = 'http://www.contactedurl.com/query&callback=?';
        var script = document.getElementsByTagName('script')[0];
        script.parentNode.insertBefore(NewScript, script);
    });
});

这两种解决方案都会生成以下警告消息,因此不会执行更新:

  

忽略了从异步加载的外部脚本调用document.write()。

我理解生成此消息的原因,以及为什么没有执行更新,但我无法找到任何解决此限制或替代解决方案的工作。

我想知道是否有人知道替代解决方案。

谢谢。

2 个答案:

答案 0 :(得分:0)

你根本无法按照自己的方式去做。你必须正常包含脚本。

<div>
    <script src="http://www.contactedurl.com/query&callback=?"></script>
</div>

document.write(尽管以这种方式这样做毫无意义):

<div>
    <script>
      document.write("<scr"+"ipt src='http://www.contactedurl.com/query&callback=?'></scr"+"ipt>");
    </script>
</div>

其中<div>...</div>是您希望输出的位置。

答案 1 :(得分:0)

jQuery有一个名为$.getScript()

的Ajax简写

http://api.jquery.com/jQuery.getScript/