这是一个非常简单而又愚蠢的问题我会问:
我是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文件中修改)。
感谢。
答案 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。我认为您正在使用具有过程代码的类。因此,我会使用一个声明一堆函数的文件。