Home » Php » Calling a specific function from PHP with Jquery & Ajax

Calling a specific function from PHP with Jquery & Ajax

Posted by: admin July 12, 2020 Leave a comment


For me this is something new, so I am just researching this and trying to understand it.
As you can see in the php script there are 2 functions and I am trying to call a specific one with jquery.

Now if I have one function then I can do it, but when I have 2 or more I am starting to get stuck.
I suppose I could do this when I have 2 functions, but as soon as more variables are in play or more functions do I just make massive if statements in my php?

The problem is that when I attach a database to it, I would need to consider all inputs that can happen.
How do I specify a specific php function when using jquery & ajax?

    function firstFunction($name)
        echo "Hello - this is the first function";

    function secondFunction($name)
        echo "Now I am calling the second function";


    $var = $_POST['name'];

        $getData = firstFunction($var);
    else if(isset($var))
        $getData = secondFunction($var);
        echo "No Result";


<div id="calling">This text is going to change></div>


     $(document).ready(function() {
        $('#calling').load(function() {
            cache: false,
            type: "POST",
            url: "function.php",
            data: 'name=myname'
            success: function(msg)

            }); // Ajax Call
        }); //event handler
    }); //document.ready

How to&Answers:

You need to pass a parameter in, either via the data object or via a GET variable on the URL. Either:

url: "function.php?action=functionname"


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

Then in PHP, you can access that attribute and handle it:

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

Note: a better idea for security reasons would be to whitelist the available functions that can be called, e.g.:

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

Implementation example:

// PHP:
function foo($arg1) {
    return $arg1 . '123';

// ...
echo $action($var);

// jQuery:
data: {
    name: 'bar',
    action: 'foo'
success: function(res) {
    console.log(res); // bar123


You are actually quite close to what you want to achieve.

If you want to specify which function will be called in PHP, you can pass a variable to tell PHP. For example, you passed request=save in AJAX, you can write the PHP as follow:

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

EDIT: You can even pass along with other parameters


This may not be exactly what you are looking for but it can help some others looking for a very simple solution.

In your jquery declare a variable and send it

var count_id = "count";

    count_id: count_id

Then in your php check if this variable is set

if(isset($_POST['count_id'])) {

Your function here