我正试图使用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'
});
});
我在函数中有这个。hp:
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;
}
现在,当评论wp_dropdown_categories行时,我在客户端得到了一个"true",而当我取消注释该行时(PHP崩溃),我完全没有得到任何结果。php错误日志中没有任何内容(WAMP设置)。
此外,即使我添加了require_once(__DIR__.'/../../../wp-load.php');
也不起作用,但如果我在浏览器中使用GET(对于函数.php),它会起作用。如有任何帮助,我们将不胜感激!
我的问题是因为我不返回json对象,而是返回html(实际上是文本和html的混合),并且您设置jQuery来验证响应是json,而事实并非如此。