AJAX内容不使用加载的Javascript源代码

时间:2013-05-01 02:37:25

标签: javascript ajax jquery

我有一个名为incident.php的文件,它加载了我的主页面。这包括页眉,页脚和侧边栏。我从incident.inc.php加载的页面内容。随着这种情况的不断变化,我选择使用AJAX来加载这些内容并以30秒的间隔重新加载,使其可以作为仪表板保持打开状态。

对于仪表板代码,我使用的是Twitter Bootstrap和此仪表板:https://wrapbootstrap.com/theme/metro-admin-template-WB0KDM51J

此仪表板包含多个JS文件,它们会在每个页面的底部加载。我发现当我通过AJAX加载内容时,它与加载的javascript源文件一起运行不正常。我已经看到了在Ajax内容加载时让脚本运行的多种方法,但是我还没有看到如何识别仪表板包含的这20个左右的javascript文件。我发现的唯一工作是在incident.inc.php中包含所有这些javascript文件,我认为这不是正确的方法。

我正在寻找有关如何从AJAX加载内容以利用原始文件(incident.php)中包含的Javascript文件的最佳实践。

在incident.php中我的AJAX调用如下。

(function($){
        $.ajaxSetup(
            {
                cache: false,
                beforeSend: function() {
                    $('#incidents').hide();
                    $('#loading').show();
                },
                complete: function() {
                    $('#loading').hide();
                    $('#incidents').show();
                },
                success: function() {
                    $('#loading').hide();
                    $('#incidents').show();
                }
            });
        var $container = $("#incidents");
        $container.load("incident.inc.php");
        var refreshId = setInterval(function()
        {
            $container.load('incident.inc.php');
        }, 30000);
    })(jQuery);

我知道必须有更好的方法来做到这一点。在这种情况下,我似乎无法确切地指出如何做到这一点。

1 个答案:

答案 0 :(得分:0)

你可以让incident.inc.php发回两个结果,而不是普通的HTML。

现在它可能会响应这样的事情:

...
<div>HTML here</div>
...

如果您使用JSON回复:

{html:"<div>HTML here...</div>", scripts:["/js/movieplayer.js","/js/myscript.js"]}

然后您可以存储已加载的javascript文件,因此您不必再次加载相同的文件。