我网站上的所有字符串都是从 lang.php 中名为lang()
的php语言函数中提取的。当我在 index.php 文件中使用它时,该函数有效,即:
<p><? echo lang('hello-world'); ?></p>
但是,如果我使用elem.load('something.php');
,其中 something.php 包含相同的上述代码,则不会返回任何内容。事实上,如果我输入:
<p><? echo haslkdfhasdf('hello-world'); ?></p>
我甚至没有收到错误。现在,在阅读了这个Call PHP function in ajax并使用header()后,我仍然没有得到返回的字符串。那么我的问题是,为什么函数不能从通过AJAX加载的外部php文件中运行,而我错过了什么?
[编辑] 哎呀忘了我的AJAX代码。这是我用来加载文件的内容:
$('#main-content').load('_foo/views/error.php');
这是error.php文件:
<p id="ajax-error-message">
<? echo lang('html'); ?>
</p>
现在,我知道该文件已加载,因为如果我用“echo'Hello World'替换该函数;”它正确显示它。以下是您需要的网站:http://afoobar.com,当您点击HTML5 Sandbox时,它会执行AJAX。
我会在同一时间尝试你的建议!
答案 0 :(得分:1)
由于我没有看到您的JavaScript代码(减去elem.load()
我无法为您提供有保障的解决方案。但是,我可以建议您更改{{1}对于这样的事情:
elem.load()
此外,您可以使用$.ajax({
url: 'something.php',
cache: false,
success: function(response) {
// do something
},
error: function(xhr, error) {
try {
console.debug(xhr);
console.debug(error);
} catch (err) {
alert(err);
}
}
});
执行相同的操作。
修改
请记住,您在AJAX调用中拥有$.ajaxSetup();
(或include
)所有需要的文件,因为它实际上是在发出单独的HTTP请求。
require