我正在开发一个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的问题,描述了同样的问题,检查了解决方案,但找不到我出错的地方。
答案 0 :(得分:0)
一旦我将output.php文件的代码添加到保存AJAX网址的wp_localize_script()
命令的文件中,它终于开始工作了。
对于前端使用AJAX调用,您需要使用此命令来使AJAX可用。在管理区域中,默认情况下可以使用AJAX。