我有一个index.php 文件,它将根据$_GET 变量加载内容。所以,它的功能基本上是这样的......
<?php
$problem_id = $_GET['problem_id'];
include('include/' . $problem_id . '.php');
?>
因此,如果用户单击问题类型#8,8.php
将包含在index.php文件中并显示其内容。
问题是我现在使用AJAX来加载8.php
(或选择任何文件)。某些文件依赖于其他 javascript 文件(即 <script type="text/javascript" src="/include/js/api/utils.js"></script>
)才能工作。当我通过 AJAX 运行 index.php 文件时,似乎没有加载这些依赖项。如果我在 URL 中使用普通的 $_GET 变量(即 http://myscript.com?problem_id=8
)运行它,它就可以正常工作。
这是 AJAX 的已知问题吗?无论如何?
谢谢。
最佳答案
您尚未指定所需 JavaScript 文件的加载位置。但是,如果我们假设它们包含在您的 php 脚本中,那么当您直接访问该 php 脚本时它们会起作用,但当您通过 ajax 包含它时它们不会起作用。
我的建议是一种简单的方法,即在您的调用页面 (index.php) 中包含所有 JavaScript,以便它可以随时运行,无论动态加载哪些内容。
因此请务必提前加载依赖项,并且不要将它们包含在您包含的 php 文件中。
当你通过ajax加载内容时,它确实需要是可以合并到现有页面DOM中的html,加载javascript并执行它并不是那么简单,尽管这是可能的(使用requirejs或类似的),但我认为也许上面的简单方法适合您。
关于Javascript 依赖项未通过 Ajax 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24295414/