背景:没有使用php框架
由于临时需求,需要ajax调用php中的方法,简单的写了一个php文件,文件定义了两个方法,如何用ajax分别调用同一个php文件不同的方法。
以下是abc.php文件,我定义的两个方法a方法和b方法
<?php
class abc
{
function a(){
echo something;
}
function b($args){
echo something;
}
}
}
?>
以下是Controller.php,这个文件是调用其他具体的功能类的控制器,起到枢纽作用,主要是通过反射来实现
<?php
if (!empty($_REQUEST['action'])) {
try {
$action = explode('/', $_REQUEST['action']);
$class_name = $action[0];
$method_name = $action[1];
require $class_name . '.php';
$class = new ReflectionClass($class_name);
if (class_exists($class_name)) {
if ($class->hasMethod($method_name)) {
$func = $class->getmethod($method_name);
$instance = $class->newInstance();
$func->invokeArgs($instance, array($_REQUEST));
}
}
}
catch (Exception $exc) {
echo $exc->getTraceAsString();
}
}
?>
使用ajax调用时,使用如下写法实现只调用abc.php中的a方法:
$.ajax({
type:"POST",
url: 'Controller.php?action=abc/a',
dataType: 'json',
success: function(data) {
}
});
如果需要传参数,可以这么写来调用:
$.ajax({
type:"POST",
url: 'Controller.php',
data:{
action=abc/b,
参数1: 123,
参数2: 456}
dataType: 'json',
success: function(data) {
}
});