我有一个名为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);
我知道必须有更好的方法来做到这一点。在这种情况下,我似乎无法确切地指出如何做到这一点。
答案 0 :(得分:0)
你可以让incident.inc.php发回两个结果,而不是普通的HTML。
现在它可能会响应这样的事情:
...
<div>HTML here</div>
...
如果您使用JSON回复:
{html:"<div>HTML here...</div>", scripts:["/js/movieplayer.js","/js/myscript.js"]}
然后您可以存储已加载的javascript文件,因此您不必再次加载相同的文件。