0

好吧,

我有一个错误模块,它基本上只是一个样式化的 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>
4

1 回答 1

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)在页面加载时运行。

于 2013-06-10T02:25:55.737 回答