有没有办法做到这一点:
$.post( "functions.php", { name: "John", time: "2pm" })
.done(function( data ) {
alert( "Data Loaded: " + data );
});
但要将数据发送到" functions.php"?
的特定功能想法是functions.php会有许多功能,但是你希望这个特定的post请求与特定的功能进行交互。
答案 0 :(得分:0)
您需要将变量作为网址的一部分传递:
$.post( "functions.php?method=myMethod", { name: "John", time: "2pm" })
.done(function( data ) {
alert( "Data Loaded: " + data );
});
然后做一些事情来检查这个,并在你的php文件中调用你想要的任何方法:
switch($_GET['method']){
case: 'myMethod':
myMethod();
break;
case: 'myOtherMethod':
myOtherMethod();
break;
default:
echo "Unknown method";
break;
}
或者,您可以在POST数据中包含:
$.post( "functions.php", { method:"myMethod",name: "John", time: "2pm" })
.done(function( data ) {
alert( "Data Loaded: " + data );
});
然后,您将在上面的PHP代码中检查$_POST
而不是$_GET
。
另外值得注意的是文件的名称听起来像functions.php只包含共享功能 - 最好有一个专门的文件来处理你的请求,例如api.php
然后包含functions.php
。
并不是说你会说你会做,而是要小心做任何事情"聪明"这将允许用户调用任何函数,因为这是一个非常好的方法来创建安全问题!
如果你需要调用许多不同的函数,那么你可以考虑使用像this这样的RPC客户端/服务器 - 但这有其自身的风险,因此在做出这个决定之前你应该做更多的研究
答案 1 :(得分:0)
您无法直接调用函数,但可以使用数据发送请求并使用$ _GET,例如:
$.ajax({ url: 'url',
data: {parameterName: data},
type: 'POST'
});
在PHP脚本中,您应该使用:
if(isset($_GET["parameterName"])({
#do something
}