【问题标题】:AJAX to a PHP class that extends, the included classes are not passedAJAX 到扩展的 PHP 类,包含的类不传递
【发布时间】:2015-03-06 05:38:38
【问题描述】:

我通过 AJAX 从一个 PHP 类调用一个函数,该类扩展了另一个类但不包含在该文件中,而是包含在另一个文件中。 详细说明这里是我的代码:

客户:

$('.username').change(function(){
        var indexOfNumber = $(this).attr('class').indexOf('d');
        var number = $(this).attr('class').substring(Number(indexOfNumber)+1);

        $.ajax({
            url: 'class1.php',
            complete: function(response) {
                alert(response.responseText);
            },
            error: function(){
                alert("error");
            }
        });

        $('.userrole.d'+number).html(number);
    });

第一类:

class class1 extends class2
{
    function class1()
    {
        $this->class2(); << I am getting an error here
    }

我得到的错误是:

在(class1 的位置)中找不到类“class2”。

class2 包含在项目的 config.php 文件中,因此它不再包含在文件中,当我从 AJAX 调用该文件时,它似乎看不到以前包含的 PHP 文件。

有什么办法吗?

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    解决它的唯一方法是要求 class1.php 中的必要文​​件。或者您可以包含一个加载自定义自动加载器的文件,该自动加载器可以在请求类时动态加载文件。

    【讨论】:

    • 我不能做第一个选项,因为这会导致两次声明同一个类时出错。您能否详细解释一下答案的第二部分:“包含一个加载自定义自动加载器的文件”
    • 如果您只需要该文件一次,则不应出现该错误。如果您使用require_once 而不是requireinclude 应该没问题。最好使用__construct 而不是命名构造函数:function class1()。这已被弃用。
    • 那行得通。谢谢。你还能详细说明一下自定义自动加载器吗?
    • 基本上,您创建一个函数,接收需要加载的类的名称。然后,您编写逻辑来确定如何使用基于该名称的类查找文件的位置。见这里:php.net/manual/en/function.spl-autoload-register.php
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2011-10-03
    • 2021-08-22
    • 1970-01-01
    相关资源
    最近更新 更多