2

我正在加载包含一些 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());
}); 

任何帮助表示赞赏,谢谢。

4

3 回答 3

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

PS 如果这不起作用,请尝试更改.filter.find.

于 2012-05-01T19:09:08.137 回答
0

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

var posts = "<?php .... ?>" 
于 2012-05-01T19:08:55.097 回答
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;
});
于 2012-05-01T19:13:47.863 回答