使用Ajax.Request(使用原型)在PHP文件中调用某个方法的最佳方法是什么?我正在使用Form.serialize提交表单,所以我想添加一个参数(比如要调用的方法的名称),然后在服务器脚本上检查它。 类似的东西:
var params=Form.serialize("someform")+"&=method='check_data'";
new Ajax.Request('somescript.php',{method:'post',parameters:params,onSuccess:
function(response)
{
.. do something with the response
在somescript.php中:
if($_POST["method"] == "check_data")
{
check_data();
...
}
这可行,但我确信这是一种更好或更简单的方法来调用远程方法(ala MVC)。有什么想法吗?
答案 0 :(得分:3)
在任何情况下都不能用于普通的PHP方法。它打开了一个巨大的潜在安全漏洞。即使你限制了那种可以调用的命令,从长远来看也不是一个好方法。
要么保留你已经做的事情:定义一个可以传递给PHP脚本的命令列表(例如command=delete
,command=update
,command=copy
,无论你需要什么),以及使用switch
给他们打电话。
或者使用具有可以从外部安全调用的方法的类:
class myCommands
{
function copy() { ... }
function delete() { ... }
function update() { ... }
}
然后,在PHP文件中,传递像
这样的命令if (method_exists($class, $_POST["method"]))
call_user_func(array($class, $_POST["method"]));