PHP 函数被 jQuery 包含时未定义

标签 php javascript jquery function

好的,

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

最佳答案

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

关于PHP 函数被 jQuery 包含时未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17016104/

相关文章:

PHPExcel 不会导出为 CSV

javascript - Vue.js 访问父组件

javascript - 如何使幻灯片自动播放并更改交换以在 JavaScript 中淡入淡出

javascript - 如何防止 jQuery 在隐藏元素之前加载修改后的内容?

php - 如何在 MySQL 中连接多个表,然后使用 PHP 将它们显示为每个新父 ID 的一组表

PHP CSS Color Shuffle 数组?

javascript - 如何在页面加载时折叠元素

javascript - jQuery 在用户滚动出元素时查找

php - PHP 中的 Android 屏幕截图

javascript - 对象属性的 null 值转换为 "null"字符串