我搜索了很多主题,但找不到合适的答案。我的目标是建立一个HYML超链接,它调用一个在PHP页面上运行AJAX post请求的Javascript函数,以运行任意数量参数的PHP函数。很多主题都针对特定功能(使用特定名称)解决了这个问题。我想概括一下AJAX发布请求以使用相同的函数调用所有类型的PHP函数。使用没有jQuery的通用ajax javascript调用任何php函数
这是我有什么,但它出错的PHP脚本...
的HTML:
<a onclick="call_php('php_function_name', ['arg_1', 'arg_2']);">call</a>
<p id="demo"></p>
的JavaScript:
function call_php(fname, args) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById('demo').innerHTML = this.responseText;
}
};
xhttp.open('POST', 'includes/functions.php', true);
xhttp.setRequestHeader('Content-type', 'application/json');
xhttp.send(JSON.stringify({
'fname': fname,
'args': args
}));
}
在我的Javascript”如果在这种情况下正确使用JSON.stringify()
和setRequestHeader()
,则提问。
PHP的,应该调用一个函数在它的文件:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
//header('Content-Type: application/json');
$post = json_decode($_POST/*, true*/);
// DO SOMETHING TO CALL: fname(...args);
}
function php_function_name(arg_1, arg_2) {
// A FUNCTION...
}
在PHP我质疑header('Content-Type: application/json')
因为它在使用Javascript已定义。但主要问题是:如何编写PHP代码来调用PHP函数?顺便说一下:当我打印echo $post
它给出了一个警告:json_decode()期望参数1是字符串,给定的数组...
您是否在寻找像[call_user_func或call_user_func_array]一个PHP函数(http://php.net/manual/en /function.call-user-func.php),例如'call_user_func_array('php_function_name',数组(&$ a))'? – gus27
可能的重复[调用PHP函数的名称从JavaScript](http://stackoverflow.com/questions/23039439/call-php-function-by-name-from-javascript) – gus27
什么@ gus27说,虽然你可能想要要检查你的JS试图调用的函数实际上是否先存在,请使用[method_exists()](http://php.net/manual/en/function.method-exists.php)。 – Nukeface