Alrighty,
我有一个错误模块,它基本上只是一个样式的div,它调用PHP函数来打印错误。
当我像这样包含它时它完美地运作:
<?php if(!empty($errors)){
include 'includes/modules/error.mod.php';
}else if(!empty($success)){
include 'includes/modules/success.mod.php';
}?>
但我现在正试图用jQuery使其更加闪亮,所以我将它包含在jQuery函数中:
function errorModule(){
$.get('includes/modules/error.mod.php', function(data){
var errorModule = $(data).hide();
errorModule.appendTo($('#navMain')).show('blind', 1500);
});
}
现在,它大部分都是有效的。错误模块看起来像我也想要它。然而,曾经完美运行的PHP函数现在是“未定义的”。
为什么?
编辑:error.mod.php的内容
<div id="errorModule">
<p class="h2">The Following Errors Have Occured:</p>
<?php
echo outputArray($errors);
?>
</div>
答案 0 :(得分:2)
AJAX调用($.get
的目的)与include
不同,它是对提供的URL的单独Web请求。因此,在这种情况下,$.get
提取的内容与将浏览器指向includes/modules/error.mod.php
时将加载的内容相同 - 调试AJAX的一种好方法就是这样做。
根据文件名,我怀疑这不是你想要的,而且这个文件本身不是自己加载的。
要使用AJAX,您需要的是一个新的PHP页面,例如ajax_message_output.php
,它执行必要的处理以将“模块”输出到页面上。请注意,此页面不会包含“父”页面中的任何数据 - 因此,例如,$errors
在新的ajax_message_output.php
中与主页上的值不同
如果您要做的只是显示主页加载中的错误,但让它们看起来“更加闪亮”,那么AJAX就不是您想要的技术。要让它们向下滑动,只需将它们隐藏起来(使用<div id="messages" style="display: none;">...</div>
或类似)并在页面加载时运行$('#messages').show('blind', 1500)
。