如何通过ajax-request加载serverside函数?

时间:2017-12-08 10:21:24

标签: php jquery ajax

我问自己是否可以通过Ajax-Request在一个PHP文件中加载相关的PHP函数。当然应该可以,但是如何?

Normaly,在我的webapplication中,每个Ajax函数(在客户端上)通过其URL调用特定的PHP文件。例如,这个Ajax调用包括/ ajax.php。

function ajaxRequest( ) {

    $( ".loading-overlay" ).show();
    $('#loading').show();
    $.ajax({
        url : "includes/ajax.php",
        type : "POST",
        data : $("#nodes").serialize(),
        dataType: "json",
        cache : false,
        success: function( data ) {
            drawChart( data.chart_data );
            currentGauge( data.current_data.current );
            tableMaxMin( data.maxmin_data );
            tableAvgDays( data.avg_data );
            $('#loading').hide();
            $( ".loading-overlay" ).hide();
        },
        error: function(xhr, desc, err) {
            console.log(xhr);
            console.log("Details: " + desc + "\nERROR: "+ err);
        }
    });
}

我的大多数应用程序都有多个Ajax请求。我认为为每个ajax函数创建一个新的PHP文件并不是非常有效,尤其令人困惑。一个更好的解决方案是将每个不同的(服务器端)响应引擎存储在一个具有不同功能的PHP文件中。

只是为了理解,我正在寻找这样的东西:

function ajaxRequest( ) {

    $( ".loading-overlay" ).show();
    $('#loading').show();
    $.ajax({
        url : "includes/ajax.php",
        function: parseData(),  //<--- This is not allowed
        type : "POST",
        data : $("#nodes").serialize(),
        dataType: "json",
        cache : false,
        success: function( data ) {
            drawChart( data.chart_data );
            currentGauge( data.current_data.current );
            tableMaxMin( data.maxmin_data );
            tableAvgDays( data.avg_data );
            $('#loading').hide();
            $( ".loading-overlay" ).hide();
        },
        error: function(xhr, desc, err) {
            console.log(xhr);
            console.log("Details: " + desc + "\nERROR: "+ err);
        }
    });
}

那么,如何按函数加载特定的响应引擎而不是url?

1 个答案:

答案 0 :(得分:0)

来自一个文件的ajax调用

$.ajax({
    url: "includes/ajax.php?action=login",
    method: "POST",
    success: function(response){
        console.log(response);
    }
})

从另一个文件调用ajax

$.ajax({
    url: "includes/ajax.php?action=userdetail",
    method: "POST",
    data : {'userId': 1},
    success: function(response){
        console.log(response);
    }
});

// ajax.php

<?php

    $action = $_GET['action'];
    extract($_POST);
    switch($action){
        case 'login' :
            //code for login
        break;
        case 'userdetail' :
            //code for userdetail you can use directly $userId to access post variable as we have use `extract` method.
        break;
        default :
             echo json_encode(array("message"=>"Please provide proper action"));
        break;
    }
?>