使用Jquery调用带有参数的php函数
我有一个php文件func.php
,我在其中定义了许多函数,让我们说:
我想使用ajax调用function func1
。 谢谢您的帮助
您不能直接从AJAX调用调用PHP函数,但您可以这样做:
PHP:
php function func1($data){ return $data+1; } if (isset($_POST['callFunc1'])) { echo func1($_POST['callFunc1']); } ?>
JS:
$.ajax({ url: 'myFunctions.php', type: 'post', data: { "callFunc1": "1"}, success: function(response) { alert(response); } });
你应该通过ajax请求调用你的php脚本,使用jquery,如:
使用Javascript:
$.ajax({ url: "script.php", data: { param1: "value1", param2: "value2" }, type: "GET", context: document.body }).done(function() { // your code goes here });
您可以通过ajax对象的data属性提供参数。
腓
// you can do isset check before $param1 = $_GET['param1']; $param2 = $_GET['param2']; // validate // sanitize // save to db // blah blah // do something with params
您可以从http://api.jquery.com/jQuery.ajax/的 jQiery.ajax()函数说明中获得更多信息。
它有点复杂,但我会尝试将其缩小到基础。
在调用者和脚本之间需要某种接口(基本上是约定)。 这里有两个主要问题:
-
您的脚本了解需要调用的内容以及使用什么参数的方式。 假设您决定使用
GET
请求来调用函数。 函数名可以在func
字段中,参数在args
,作为字符串分隔;
。 换句话说,调用funcFoo(5,'bar')
将通过请求func.php?func=func1&args=5;bar
。 -
调用者接收(并理解)返回值的方式。 由于您的需求是面向js的,因此JSON方法非常合适。
添加以下代码以及您的function:
if(isset($_GET['func'])) { $func=$_GET['func']; if(function_exists($func)) { $args=(isset($_GET['args'])?explode(';',$_GET['args']):array()); $result=call_user_func_array($func,$args); } else $result=array('error'=>"Unknown Function $func!"); } else $result=array('error'=>"No function name provided!"); echo json_encode($result);
但是,您的function也应该更改以满足新要求。 由于没有办法告诉调用者将提供多少个参数,因此应该设计一个函数来接受没有强制参数并检查所提供的参数。 此外,它应始终返回一个数组,以便在返回给调用者之前成为json_encode
d。
例如,您的示例函数应如下所示:
function func1(){ $data=func_get_args(); if(count($data)) // at least one -- rest will be ignored return $data[0]+1; else return array('error'=>__FUNCTION__."() expects an argument!"); }
请注意 :这只是让您开始使用整个概念的骨架。 应该更加注意容错和安全性 。 但这是另一个话题的主题。
是的你可以 !
我的代码:
$.ajax({ type: "POST", url: "ajax.php", data: { kode: $(this).val(), func: 'my_func' }, success: function(response) { //any success method here } });
这里的代码在php中接收要调用的函数。
$post = (object) $_POST; if(!$post) return false; $func = $post->func; return $func($post); function my_func($post) { $json['any_data'] = false; if($post->kode == 'ND'){ $json['any_data'] = 'ND-'.date('Y'); } echo json_encode($json); }
希望它可以帮助你… … D