我有一个php文件func.php
我定义了很多函数,比如说:
<? php
function func1($data){
return $data+1;
}
?>
我想使用 ajax 来呼叫function func1
。谢谢你的帮助
答案 0 :(得分:35)
您不能直接从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); }
});
答案 1 :(得分:7)
你应该通过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
的jQiery.ajax()函数说明中获得更多信息
答案 2 :(得分:1)
这有点复杂,但我会尝试将其缩小到基础。
在调用者和脚本之间需要某种接口(基本上是约定)。这里有两个主要问题:
您的脚本了解需要调用的内容以及使用哪些参数的方式。假设您决定使用GET
请求来调用函数。函数名称可以位于func
字段中,参数位于args
字段中,作为由;
分隔的字符串。换句话说,通过请求funcFoo(5,'bar')
来调用func.php?func=func1&args=5;bar
。
调用者接收(并理解)返回值的方式。由于您的需求是面向js的,因此JSON方法非常合适。
将以下代码与您的功能一起添加:
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);
但是,您的功能也应该更改以满足新要求。由于没有办法告诉调用者将提供多少个参数,因此应该设计一个函数来接受没有强制参数并检查所提供的参数。此外,它应始终返回一个数组,以便在返回给调用者之前为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!");
}
请注意:这只是让您开始使用整个概念的骨架。 容错和安全性应该更加小心。但这是另一个话题的主题。
答案 3 :(得分:0)
是的,你可以!
这里是我的代码:
$.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