使用Jquery和Ajax从PHP调用特定函数

对我来说这是一个新的东西,所以我只是研究这个并试图理解它。 正如您在php脚本中看到的那样,有两个函数,我试图用jquery调用一个特定的函数。

现在,如果我有一个function,那么我可以做到,但当我有2个或更多时,我开始卡住了。 我想,当我有2个函数时,我可以做到这一点,但是只要有更多的变量在运行或更多的函数,我只是在我的php中制作大量的if语句?

问题是当我附加数据库时,我需要考虑可能发生的所有输入。 使用jquery&ajax时如何指定特定的php函数?

//function.php   //index.html 
This text is going to change>
$(document).ready(function() { $('#calling').load(function() { $.ajax({ cache: false, type: "POST", url: "function.php", data: 'name=myname' success: function(msg) { $('#calling').html((msg)); } }); // Ajax Call }); //event handler }); //document.ready

您需要通过数据对象或URL上的GET变量传入参数。 或者:

 url: "function.php?action=functionname" 

要么:

 data: { name: 'myname', action: 'functionname' } 

然后在PHP中,您可以访问该属性并处理它:

 if(isset($_POST['action']) && function_exists($_POST['action'])) { $action = $_POST['action']; $var = isset($_POST['name']) ? $_POST['name'] : null; $getData = $action($var); // do whatever with the result } 

注意:出于安全原因,更好的想法是将可以调用的可用函数列入白名单,例如:

 switch($action) { case 'functionOne': case 'functionTwo': case 'thirdOKFunction': break; default: die('Access denied for this function!'); } 

实施示例:

 // PHP: function foo($arg1) { return $arg1 . '123'; } // ... echo $action($var); // jQuery: data: { name: 'bar', action: 'foo' }, success: function(res) { console.log(res); // bar123 } 

你实际上非常接近你想要达到的目标。

如果要指定在PHP中调用哪个函数,可以传递一个变量来告诉PHP。 例如,您在AJAX中传递了request=save ,您可以按如下方式编写PHP:

 $request = ''; switch(trim($_POST['request'])) { case 'save': $player_name = (isset($_POST['playername']) ? trim($_POST['player_name']) : 'No Name')); saveFunction($player_name); break; case 'load': loadFunction(); break; default: // unknown / missing request } 

编辑:您甚至可以传递其他参数

这可能不是您正在寻找的,但它可以帮助其他人寻找一个非常简单的解决方案。

在你的jquery中声明一个变量并发送它

 var count_id = "count"; data: { count_id: count_id }, 

然后在你的php检查是否设置了这个变量

 if(isset($_POST['count_id'])) { Your function here }