通过AJAX访问PHP类函数

时间:2012-02-09 18:07:23

标签: php jquery

有谁知道如何通过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();
}

我不喜欢它......

6 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:3)

我不知道你为什么喜欢这样做。 它不是一个好的编程实践。 但你可以试试这样的东西

$.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;

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

PHP:

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

HTML:

<input type="button" onclick="<?php $obj->doStuff(); ?>" id="btnAdd" value="Click Me" />

此外,您可以查看xajax,这是一个简化php&lt; - &gt; javascript交互的漂亮小框架。它也可以从php调用js函数。这是链接:http://www.xajax-project.org/en/home/

答案 4 :(得分:1)

**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']);

答案 5 :(得分:0)

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