我正在尝试从ajax调用访问PHP函数,但我遇到了各种各样的问题,因为这是我第一次做这样的事情。我需要帮助创建功能或修复我的功能。
这是我的ajax调用(由于完整的函数与问题无关,我只会发布一小部分内容)
$.ajax({
type : 'post',
url : 'data.php?action=checkname',
data : {'location':locationName},
error : function(data,status,error){
console.log(data+': '+status+': '+error);
},
success : function(res){
console.log(res);
}
});
PHP功能
<?php
function checkname(){ <--- What do I pass in the function???
$locations = $_POST['location'];
echo $locations;
}
?>
如果我通过调用文件并执行类似
之类的操作来实现“简单方法”$locations = $_POST['location'];
echo $locations;
我得到了我需要的回报,但是为我需要创建的所有ajax调用创建一个小文件是错误的。
答案 0 :(得分:1)
你可以设置php做这样的事情。使用Switch
并在action
中为每个ajax
提供您要激活的Case
的名称。这样您就可以使用相同的文件并根据需要调用不同的函数。
<?php
$action = $_POST["action"];
//check if it was sent using $_GET instead of $_POST
if(!$action)
$action = $_GET["action"];
switch($action){
case 'checkname':
checkname();
break;
case 'otherfunction':
otherfunction();
break;
}//switch
function checkname(){
$locations = $_POST['location'];
echo $locations;
}
function otherfunction(){
//do something else
//echo something;
}
?>
我没有放入ajax,因为你已经有了ajax调用。 ajax的这一部分是您将用于操作的名称。 data.php?action=checkname
或者您可以使用这样的数据。
var action = 'checkname';
$.ajax({
type : 'post',
url : 'data.php',
data : {'location':locationName,'action':action},
error : function(data,status,error){
console.log(data+': '+status+': '+error);
},
success : function(res){
console.log(res);
}
});
您可以使用其他ajax函数,只需将变量操作更改为您要调用的函数。
答案 1 :(得分:1)
为文件添加一些条件:
$action = isset($_GET['action']) ? $_GET['action'] : null;
switch($action) {
case 'checkname':
checkname();
break;
case default:
// default action
break;
}
答案 2 :(得分:0)
您可以像这样编写php内容:
<?php
/*this part of code will be executed only when location parameter is set by post,
thus can send multiple ajax requests to a single file*/
if(isset($_POST['location'] && $_POST['location'] != "")
{
$location = $_POST['location'];
echo checkname($location);
}
function checkname($location)
{
return $location;
}
答案 3 :(得分:0)
$functionName()
或call_user_func($functionName)
$action = (isset($_POST['action'])) ? $_POST['action'] : null;
if ( !empty($action) && function_exists($action) )
call_user_func($action);