我正在尝试编写一个WP函数来处理ajax和直接调用,如下所示:
PHP
function some_function($var){
$var = !empty($var) ? $var : $_POST[\'var\'];
echo $var;
//or even
$var = null;
echo \'something\';
if(!empty($_POST[\'action\'])) wp_die();
}
AJAX调用
let ajaxurl = \'███\';
let data = {\'action\': \'somefunction\',\'var\':\'foo\')};
$.post(ajaxurl, data, function(response) {console.log(response);});
WP使用
add_action( \'wp_ajax_somefunction\', \'some_function\',10,1);
add_action( \'wp_ajax_nopriv_somefunction\', \'some_function\',10,1);
另一次WP使用
some_function(\'bar\');
然而,每当我将$var作为一个可接受的函数参数时,一些\\u函数($var),我的ajax调用就会开始返回500个错误。像这样的
function some_function(){
$var = !empty($var) ? $var : $_POST[\'var\'];
echo $var;
}
适用于ajax。
我尝试查找wp ajax&;参数,但搜索结果总是关于我们通过ajax传递的变量,而不是回调函数参数。我学到的唯一一件事是,我们必须在add\\u action()中添加一些可接受的参数
我做错了什么?
非常感谢。
。。。P、 我发现了一个有趣的解决方法:
function some_function_ajax(){
$var = $_POST[\'var\'];
some_function($var);
}
function some_function($var){
echo $var;
} // =)
但是,正确的方法是什么?
Jackob Peattie,谢谢你的提示!工作代码如下所示,然后:
//JS (jQuery):
let data = {
\'action\' : \'func\',
\'var\' : \'something\',
\'nonce\' : nonce
};
$.post(ajaxurl, data);
//add_action:
add_action( \'wp_ajax_func\', \'func_ajax\');
add_action( \'wp_ajax_nopriv_func\', \'func_ajax\');
//PHP:
function func_ajax(){
//verify nonce
if(empty($_POST[\'nonce\']) || !wp_verify_nonce( $_POST[\'nonce\'], \'myajax-nonce\' ) ) wp_die();
$var = $_POST[\'var\'];
func($var);
//end ajax call
wp_die();
}
function func($var){
echo $var;
}