通过AJAX访问PHP类函数

有谁知道如何通过AJAX(使用jQuery)从PHP类直接访问函数。

PHP:

class Blah { function __construct() { } function doSomething(data) { echo "I am not an animal"; } } 

jQuery的:

 $.ajax({ url: myClass.php, data: Blah.doSomething(); "or" Blah->doSomething() "or whatever" }); 

我知道这是一个粗略的例子,我只是想说明一点,我希望你能得到我的问题的要点。

目前我正在沿着这些方向做点什么:

 $.ajax({ url: myClass.php, data: data : { 'type':'doSomething' } }); 

||

 if(POST['data']['type'] == 'doSomething') { $this->doSomething(); } 

我不喜欢它……

您需要创建该类的对象,然后调用所需的方法。 类声明不会执行任何代码。

例如,您可以在类下面添加:

 class Blah { ... } $b = new Blah(); $b->doSomething(); 

更新:

如果要调用POST中发送的方法,可以使用函数call_user_function:

 $method_name = $_POST['method']; $b->{$method_name}(); 

详情请见: http : //php.net/manual/en/function.call-user-func.php

我不知道你为什么喜欢这样做。 它不是一个好的编程习惯。 但你可以尝试这样的事情

 $.ajax({ url: myClass.php, data: {'call':'Blah.doSomething', 'args':5} }); 

在服务器端你可以这样做

 $fun = explode('.', $call); $function = array($fun[0], $fun[1]); if (is_callable($function)) { $response = call_user_func_array($function, $args); } echo $response; 

现在我想不出比PHP在json中输出结果更好的方法,你通过getJSON获得结果

我同意mazzucci的回答。 我希望这更完整一点。

PHP:

 class SomeClass{ //definintion } $obj = new SomeClass(); $obj->doStuff(); 

HTML:

  

此外,你可以看看xajax,一个很好的小框架,简化了PHP < - > javascript交互。 它也可以从php调用js函数。 这是链接: http : //www.xajax-project.org/en/home/

 **Your class** class Blah { function doSomething(data) { echo "I am not an animal, I'm a ".data; } } **Ajax call in other document** $.ajax({ url: example.php, data: info='beast' success: data () { ... }); **in example.php** include (class.blah.php); $obj = new SomeClass(); $obj ->doStuff($_GET['info']); 

这是不可能的。 你现在拥有的可能是最好的方式。