这是我的ajax_handle文件:
if ($_SERVER['HTTP_X_REQUESTED_WITH'] !== "XMLHttpRequest")
{
echo "Error";
exit();
}
$req = explode("_",$_POST['req']);
$className = $req[0] . "Controller" ;
$methodName = $req[1];
$file = "application/controllers/" . $className . ".php" ;
require_once $file;
if ($_POST['data']) {
var_dump($_POST['data']);
}
$controller = new $className;
$result = $controller->$methodName();
echo json_encode($result);
我将参数作为$ _POST ['data']变量中的任何数组发送。我不知道将它们传递给(动态)$ methodName函数的最佳方法是什么。
答案 0 :(得分:1)
我想您可以将$_POST['data']
原样传递给动态方法。你可以拥有
动态方法接受数组但最初设置默认值,以便您可以轻松处理和
验证他们。例如:
class AController
{
public function dynamicMethod($params)
{
// Set default values but allow them to be overridden by $params
$locals = array_merge(array(
'name' => 'John Doe',
'address' => 'Nowhere',
), $params);
// Do stuffs and return result. Example:
return array('nameAndAddress' => $locals['name'] . ' lives at ' . $locals['address']);
}
}
您还可以选择使用extract()
转换
上面的name
和address
是真实的局部变量。
在你的ajax句柄中:
$controller = new $className;
$result = $controller->$methodName($_POST['data']);
echo json_encode($result);
所有这些都说,请注意@Sven所说的是正确的。有一些安全措施 当前方法中的问题。