通过ajax执行javascript

时间:2015-04-30 10:07:45

标签: javascript ajax

我有一个php文件,它回显了带有<script>元素的HTML。像这样:

<div>
    <button onclick="FunctionName();">Click Me</button>
</div>
<script type="text/javascript" id="script1">
    function FunctionName() {
         /* block of code here */
    }
</script>
<script type="text/javascript" id="script2">
     alert("working")
</script>

我在via innerHTML方法中插入此代码。但是,我发现除非你像这样调用它,否则插入的<script>标签不会被执行:

eval(document.getElementById('script1').innerHTML);
eval(document.getElementById('script2').innerHTML);

现在的问题是:script2正在执行,它正在执行一条警告:“工作”,但当我点击按钮时,控制台会返回此错误:

Uncaught ReferenceError: FunctionName is not defined

奇怪的是,当我复制/粘贴相同的JavaScript代码时,将它放在eval()中;并在控制台中输入,它完美无缺!

那么为什么会发生这种情况以及如何解决呢?

2 个答案:

答案 0 :(得分:0)

This jsFiddle与您拥有的代码完美配合。但是如果在创建页面后附加它会导致问题,我会发现它会导致问题,因为在页面加载完成后附加内联脚本时不会执行。

如果你追加它,如果你需要在html里面找到类似的问题,请参考this帖子。但是,如果您可以将脚本移动到其他文件中,我建议使用jQuery getScript而不是普通的ajax。

$.getScript( "ajax/test.js", function( data, textStatus, jqxhr ) {
    // ...
});

答案 1 :(得分:-1)

我认为问题是当点击事件监听器建立时,你的功能还没有被创建。

尝试将script1放在具有onClick事件的div之前。