使用jQuery post将请求发送到URL的特定功能

时间:2017-02-26 21:23:29

标签: javascript php jquery ajax post

有没有办法做到这一点:

$.post( "functions.php", { name: "John", time: "2pm" })
    .done(function( data ) {
    alert( "Data Loaded: " + data );
});

但要将数据发送到" functions.php"?

的特定功能

想法是functions.php会有许多功能,但是你希望这个特定的post请求与特定的功能进行交互。

2 个答案:

答案 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
}