不通过Ajax加载Javascript依赖项

不通过Ajax加载Javascript依赖项,javascript,php,ajax,Javascript,Php,Ajax,我有一个index.php文件,它将根据$\u GET变量加载内容。所以,它基本上是这样工作的 <?php $problem_id = $_GET['problem_id']; include('include/' . $problem_id . '.php'); ?> 因此,如果用户单击问题类型#8,8.php将包含在index.php文件中,并显示其内容 问题是,我现在使用AJAX加载8.php(或选择的任何文件)。有些文件依赖于其他javascript文件(即

我有一个index.php文件,它将根据$\u GET变量加载内容。所以,它基本上是这样工作的

<?php
   $problem_id = $_GET['problem_id'];
   include('include/' . $problem_id . '.php');
?>

因此,如果用户单击问题类型#8,
8.php
将包含在index.php文件中,并显示其内容

问题是,我现在使用AJAX加载
8.php
(或选择的任何文件)。有些文件依赖于其他javascript文件(即
)工作。当我通过AJAX运行index.php文件时,似乎没有加载这些依赖项。如果我在URL中使用一个普通的$\u GET变量运行它(即
http://myscript.com?problem_id=8
),它工作正常

这是AJAX的已知问题吗?不管怎么说


谢谢。

您尚未指定所需javascript文件的加载位置。但是,如果我们假设它们包含在php脚本中,那么当您直接访问该php脚本时,它们是可以工作的,但是当您通过ajax包含它时,它们不会工作

我的建议是一种简单的方法,即在调用页面(index.php)中包含所有javascript,以便随时可以使用,而不管动态加载了哪些内容

因此,请始终提前加载依赖项,不要将它们包含在包含的php文件中


当您通过ajax加载内容时,它确实需要是html,可以合并到现有的页面DOM中,加载javascript并执行它并不是那么简单,尽管这是可能的(使用requirejs或类似工具)但我认为上述简单方法可能适合您。

基于GET变量加载php文件而不检查类似的内容是非常危险的。我建议不要这样做。
$\u GET
参数是不相关的,这是关于如何在客户端加载AJAX响应的。如果只是将其放入元素的
.innerHTML
,脚本将不会运行。要运行动态加载的脚本,必须在加载代码中显式创建
元素。我还有其他保护措施。这只是用于演示目的的一小段代码。请参阅相关问题:这是一个很好的建议,这就是为什么我不将此作为其他一些“通过AJAX的Javascript”问题的重复来结束。