执行ajax加载的javascript代码

时间:2012-05-01 19:06:13

标签: jquery ajax dom

我正在加载包含一些javascript代码的页面,并且$.getScript()方法不会在这里工作,因为一些javascript代码是通过php动态构建的。

<div id="fetch-me">
...
<script...>
var posts = <?php .... ?> 
...
</script>
</div>

由于您可能熟悉此类问题,因此我将此div添加到:

$("#load-me").load("... #fetch-me"); 

Javascript无法使用。我需要显然执行。我尝试了一些事情,但没有成功。举个例子:

$("#load-me").load("... #fetch-me", function(){
 eval($("#load-me").find("script").text());
}); 

感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:1)

load将返回它在回调中加载的数据。尝试获取脚本并将其附加到<script>标记。

$("#load-me").load("... #fetch-me", function(data){
    $('<script>').html($(data).filter('script').html()).appendTo('head');
});

如果加载的页面中有多个脚本标记,则可能无效。如果是这样的话,试试这个:

$("#load-me").load("... #fetch-me", function(data){
    $(data).filter('script').each(function(){
        $('<script>').html($(this).html()).appendTo('head');
    });
});

P.S。如果此方法无效,请尝试将.filter更改为.find

答案 1 :(得分:0)

您是否在javascript中为字符串变量添加了引号?

var posts = "<?php .... ?>" 

答案 2 :(得分:0)

你可以这样做:

$.get("page.php", function(data){
    //data is the information that page.php returns
    //Now instead of use this --> var posts = <?php .... ?>
    //do this:
    var post = data;
});