2

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

我正在尝试通过ajax调用在类hello中调用方法say test() ..

你好.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 但我没有发现任何有用的东西..

所有答案将不胜感激...

4

2 回答 2

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.
});

在名为的 PHP 脚本中callMethod.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);
}
于 2013-09-27T11:21:00.717 回答
1

尝试这个:

你好.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 请求公开你的类是不安全的。

于 2013-09-27T11:23:45.197 回答