WordPress API函数无法在AJAX functions.php调用

时间:2015-04-08 20:16:14

标签: ajax wordpress-plugin wordpress-theming wordpress

我试图使用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),则无效。 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我的问题是因为我没有返回一个json对象而是一个html(实际上是混合文本和html),你设置jQuery来验证响应是json,它不是。