从ajax调用访问PHP函数

时间:2014-01-25 18:46:14

标签: javascript php jquery ajax

我正在尝试从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调用创建一个小文件是错误的。

4 个答案:

答案 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);