我正在开发一个 WordPress 插件,一切正常。唯一的问题是,我在 jQuery 中对 php 文件中的某些代码进行了 ajax 调用。它可以工作,但它只是一个文件中的几个 php 命令。这在 WP 中是不好的做法,一切都应该在一个函数中并使用钩子附加。
这是 output.php 中的代码
if(isset($_POST['test']) && $_POST['test'] == 'ON'){
if(isset($_POST['id'])){
$productId = intval(preg_replace('/[^0-9]+/', "", $_POST['id']));
if ($productId > 1){
$results = get_option( 'test_options' );
$result = $results[$productId];
unset($results);
echo json_encode($result);
die();
}
}
}
这是 jQuery 脚本中的 AJAX 调用
$.ajax({
type: "POST",
url: "output.php",
data: {
'test' : "ON",
'id' : productId
},
success: function(results) {
result = $.parseJSON(results);
createArray(result);
}
});
这工作正常。但是,当我将 output.php 中的代码更改为函数并使用如下操作挂钩时:
function getInfo(){
$test = $_POST['test']);
$id = $_POST['id']);
if(isset($test) && ($test == "ON")){
$result = '';
if(isset($id)){
if ($id > 1){
$results = get_option( 'test_options' );
$result = $results[$id];
echo json_encode($result);
die();
}
}
}
}
add_action('wp_ajax_getInfo','getInfo');
add_action('wp_ajax_nopriv_getInfo','getInfo');
并将 jQuery 脚本更改为:
$.ajax({
url: my_ajax_script.ajaxurl,
type: 'POST',
data: {
action : 'getInfo',
test : "ON",
id : productId
},
cache: false,
success: function(results) {
result = $.parseJSON(results);
console.log(result);
alert("succes");
createArray(result);
}
});
它不起作用。我错过了什么?我已经检查了很多关于 stackoverflow 的问题,描述了相同的问题,检查了解决方案,但找不到我哪里出错了。