如何在AJAX调用中调用php函数而不是php类

时间:2013-02-18 01:05:08

标签: php javascript ajax

这是一个非常简单而又愚蠢的问题我会问:

我是PHP的新手,我想知道是否有办法通过AJAX调用PHP类中的函数。

例如:

$.ajax({
        url:'newPHPClass.php/My_Function_Name'
        ...
});

所以在php中,它就像是:

<?php
class newPHPClass {
    function My_Function_Name(){

    }
}
?>

为什么我需要这个?所以我不会喜欢这么多的php文件。相反,我将拥有一个内部具有不同功能的php类。它看起来更干净,文件更少。

之前我使用过ASP.NET MVC C#。在ASP.NET中,我可以简单地将我的控制器名称放在AJAX的URL部分中,然后是/,然后是我的函数名称(可以在我的Global.asax.cs文件中修改)。

感谢。

2 个答案:

答案 0 :(得分:1)

<?php

$action = $_POST['action'];

class Foo {

    function execute($action) {
        switch($action) {
            case "method1":
                $this->doMethod1();
                break;
            case "method2":
                $this->doMethod2();
                break;
        }
    }

    function doMethod1() {
        echo "Foo::doMethod1";
    }

    function doMethod2() {
        echo "Foo::doMethod2";
    }
}

$foo = new Foo();
$foo->execute($action);

?>

并使用foo.php?action=method1作为网址。

答案 1 :(得分:1)

首先,您不通过AJAX 调用函数或方法,制作对页面的请求。 如果您对PHP文件进行AJAX调用,如:

<?php
class newPHPClass {
    function My_Function_Name(){

    }
}
?>

除了为该类分配空间,然后在请求结束时立即销毁它之外,不会返回任何内容,服务器端也不会发生任何事情。

对于你的问题:在客户端(Javascript)如何管理类和文件组织并不重要:AJAX调用只会请求一个文件。

我建议您至少两个不同的文件:函数或类的声明以及管理响应的文件。你需要与执行和声明分开一点,因此我会避免这样的事情:

class A { ... }
$a = new A;
$a->myMethod();

根据AJAX输出,我会选择这样的东西:

# class.php
class A {...}

# ajax.php
$a = new A;
$a->myMethod();

最后一个建议:当他们没有意义时,不要使用课程。将一堆函数分组到一个类中并不会让我真正感受到OOP。我认为您正在使用具有过程代码的类。因此,我会使用一个声明一堆函数的文件。