Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用ajax动态调用PHP函数_Javascript_Php_Jquery_Ajax_Function - Fatal编程技术网

Javascript 用ajax动态调用PHP函数

Javascript 用ajax动态调用PHP函数,javascript,php,jquery,ajax,function,Javascript,Php,Jquery,Ajax,Function,我有一个问题; 如何调用多个PHP函数并将它们输出到页面上 现在我已经找到了一个方法,可以让我知道如何改进我的答案。 它工作得很好,我只是想看看有什么更好的方法 AJAX调用 $.ajax({ url: 'functioncalls.php', //URL TO PHP FUNCTION CONTROL data: {call: 'Login', parameters: {Username, Password}}, //CALL the function name with a

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

现在我已经找到了一个方法,可以让我知道如何改进我的答案。 它工作得很好,我只是想看看有什么更好的方法

AJAX调用

$.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”页面

PHP函数-确保您的函数在页面上或包含在其中

function Login($Username, $Password){
    // function control
    return json_encode($return);// return your json encoded response in value or array as needed
}
也就是说,您不需要其他任何东西就可以调用任何函数,并在您完成的ajax承诺中使用它

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


谢谢

像这样更改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]);

我认为你的问题在于post不能处理多维输入。只是简单的键值对。我也有这个问题。你正在重新发明RPC/SOAP。为什么不考虑使用REST来解耦前端和后端?@mtizziani多维输入背后的原因是什么,您可以将它们传递到php并在那里重构它们?@n00dl3这似乎更容易,我以前不完全理解也没有使用过RCP/SOAP,但我会研究它。谢谢谢谢谢谢,对不起,我只是想了解一下,将json字符串化数组传递给函数背后的原因是什么,这需要在函数端进行进一步操作,同时不增加额外的安全性或更多的多样性选项。如果在发送到php之前还有其他原因需要对数组进行Json编码,请告诉我。我几周前也问过这个问题。这是链接->。答案是,在通过post发送的每个键值对中,值必须是字符串类型。否则它可能会产生负面的副作用。我认为$\u POST是在filter\u输入函数调用它时定义为字符串数组的
$params = json_decode($_POST['parameters']);
login($params[0], $params[1]);