使用ajax

时间:2017-03-16 08:13:47

标签: javascript php jquery ajax function

我有一个问题; 如何调用多个PHP函数并将它们输出到页面上?

现在我找到了一种方法,无论如何我可以告诉我如何改进我的答案。 它运作完美,我只是想看看哪种方式更好。

AJAX CALL;

$.ajax({ 
    url: 'functioncalls.php', //URL TO PHP FUNCTION CONTROL
    data: {call: 'Login', parameters: {Username, Password}}, //CALL the function name with an array of parameters
    type: 'post'
}).done( function( Output ){
    try{
     Output  = JSON.parse(Output); // see if out put is json as that is what we will pass back to the ajax call
    } catch (e){
        alert('Error calling function.');
    }
});

PHP“functioncalls.php”页面

if(isset($_POST['call']) && !empty($_POST['call'])){ //check if function is pasted through ajax
    print call_user_func_array($_POST['call'], $_POST['parameters']);//dynamically get function and parameters that we passed in an array
}

PHP功能 - 确保您的功能在页面上或包含

function Login($Username, $Password){
    // function control
    return json_encode($return);// return your json encoded response in value or array as needed
}

就是那样,没有其他任何东西你可以调用任何函数并在你完成的ajax承诺中使用它。

注意:您的参数必须作为数组传递。

谢谢

1 个答案:

答案 0 :(得分:1)

像这样更改你的ajax请求

$.ajax({ 
    url: 'functioncalls.php', //URL TO PHP FUNCTION CONTROL
    data: {call: 'Login', parameters: JSON.stringify([Username, Password])}, //CALL the function name with an array of parameters
    type: 'post'
}).done( function( Output ){
    try{
     Output  = JSON.parse(Output); // see if out put is json as that is what we will pass back to the ajax call
    } catch (e){
        alert('Error calling function.');
    }
});
在php中你必须做这样的事情:

$params = json_decode($_POST['parameters']);
login($params[0], $params[1]);