当jQuery包含时,PHP函数未定义

时间:2013-06-10 02:20:04

标签: php javascript jquery function

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>

1 个答案:

答案 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)