如何使用jquery Ajax调用调用类的方法

时间:2013-09-27 10:53:22

标签: javascript php jquery ajax

我是Jquery和Ajax的新手..请忍受我的愚蠢问题..

我试图通过ajax调用在类 hello 中调用方法说test()..

hello.php

class hello
{
      public function test()
      {
        //some data
      }

      public function abc()
      {
        //some data
      }
}

现在我想从另一个php文件中调用 test() ...

例如:

b.php

  $.ajax({
    url : 'hello.php->test()', //just for example i have written it bcz it should call only test() not abc()..
   })

是否可以直接调用它?我已经通过$ .ajax()api,但我发现没有任何帮助..

所有答案都将得到赞赏......

2 个答案:

答案 0 :(得分:1)

一种方法是通过ajax POST或GET传递类的名称,构造函数参数以及方法名称和参数等,例如:

var url = 'callMethod.php';
var data = {
    str_className: 'Hello',
    arr_consArgs: {arg1: 'test1'},
    str_methodName: 'test'
};
$.post(url, data, function(response) {
    etc.
});

在名为callMethod.php的PHP脚本中:

/* Place your 'Hello' class here */

// class
$str_className = !empty($_POST["str_className"]) ? $_POST["str_className"] : NULL;
if ($str_className) {
    // constructor
    $arr_consArgs = !empty($_POST["arr_consArgs"]) ? $_POST["arr_consArgs"] : array();

    // method
    $str_methodName = !empty($_POST["str_methodName"]) ? $_POST["str_methodName"] : NULL;
    if (!empty($str_methodName)) {
        $arr_methodArgs = !empty($_POST["arr_methodArgs"]) ? $_POST["arr_methodArgs"] : array();
    }

    // call constructor
    $obj = fuNew($str_className, $arr_consArgs);

    // call method
    $output = NULL;
    if (!empty($str_methodName)) 
        $output .= call_user_func_array(array($obj, $str_methodName), $arr_methodArgs);

    // echo output
    echo $output;

}

其中:

function fuNew($classNameOrObj, $arr_constructionParams = array()) {
    $class = new ReflectionClass($classNameOrObj);
    if (empty($arr_constructionParams))
        return $class->newInstance();
    return $class->newInstanceArgs($arr_constructionParams);
}

答案 1 :(得分:1)

试试这个:

<强> hello.php

class hello
{
      public function test()
      {
        //some data
      }

      public function abc()
      {
        //some data
      }
}
if(isset($_GET['method'])){
   $hello = new hello;
   $hello->$_GET['method']();
}

<强> b.php

 $.ajax({
    url : 'hello.php?method=test', //just for example i have written it bcz it should call only test() not abc()..
   })

按照他们的方式,通过ajax请求公开你的课程是不安全的。