我试图使用AJAX在WordPress中显示一个类别的子类别:当我选择一个主类别时,会调用WP Ajax,结果用于显示子类别。
到目前为止,我有没有调用WP函数的客户端代码(此代码在主题页面中):
jQuery('#cat-location-main').change(function () {
var optionSelected = jQuery(this).find('option:selected');
var valueSelected = optionSelected.val();
var textSelected = optionSelected.text();
console.log(valueSelected);
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {
action: 'myajax-get-subcat',
category: valueSelected,
// send the nonce along with the request
categoryNonce: '<?php echo wp_create_nonce( 'myajax-get-subcat-nonce' );?>'
},
success: function(data, textStatus, jjqXHR) {
console.log(data);
},
dataType: 'json'
});
});
我在functions.php中有这个:
add_action('wp_ajax_myajax-get-subcat', 'myajax_get_subcat');
function myajax_get_subcat() {
$nonce = $_POST['categoryNonce'];
$main_category = $_POST['category'];
if (!wp_verify_nonce($nonce, 'myajax-get-subcat-nonce'))
die ( 'Busted!');
if(function_exists('wp_dropdown_categories')==true) {
echo 'true';
} else {
echo 'false';
}
wp_dropdown_categories('taxonomy=category&selected=1&echo=1&orderby=NAME&order=ASC&hide_empty=0&hide_empty=0&hierarchical=1&depth=1&id=cat-location-secondary&child_of='.$main_category);
exit;
}
现在我得到一个真实的&#34;在评论 wp_dropdown_categories 行时,在客户端,当我取消注释该行时(PHP崩溃),我什么都没得到。 php错误日志中没有任何内容(WAMP设置)。
此外,即使添加require_once(__DIR__.'/../../../wp-load.php');
也无法正常工作,但如果我在浏览器中使用GET(适用于functions.php),则无效。
任何帮助将不胜感激!
答案 0 :(得分:1)
我的问题是因为我没有返回一个json对象而是一个html(实际上是混合文本和html),你设置jQuery来验证响应是json,它不是。