0

I have a drop down menu with taxonomy terms (thrid level terms), and when a term is selected I want to show its parent term through an ajax request. 但由于某种原因,我得到了“0”的值而不是父项值。有人可以帮助检查我的代码,看看我在这里缺少什么:

$("select#districts").change(function() {
        $.ajax({
            url: '/metrics/wp-admin/admin-ajax.php',
            type: 'GET',
            data: {action: 'county_request', term_id : $(this).children(":selected").prop("value")},
            dataType: 'html',
            success: function(data){
                $('#district-county').html(data);
            }
        });
});

// 获取父项

function ajax_handle_request(){
    $output = ajax_get_parent_term_by_id($_REQUEST['term_id']);
    return $output;
}
add_action('wp_ajax_nopriv_county_request', 'ajax_handle_request');
add_action('wp_ajax_county_request', 'ajax_handle_request');

function ajax_get_parent_term_by_id($term_id){
    $parent_term  = get_term_by( 'id', $term_id->parent, 'state');
    return $parent_term;
}
4

2 回答 2

1

事实证明 ajax_get_parent_term_by_id 函数没有返回值,我将其更改为以下内容,现在它可以工作了:

function ajax_get_parent_term_by_id($term_id){
    $term = get_term_by( 'id', $term_id, 'taxonomy' );
    $parent_term = get_term($term->parent, 'taxonomy' );
    return $parent_term;
}
于 2012-12-01T11:14:25.100 回答
1

您应该输出结果,然后执行die()orexit()以终止脚本执行。考虑到这一点,您的代码应如下所示:

// get parent terms

function ajax_handle_request(){
    $output = ajax_get_parent_term_by_id($_REQUEST['term_id']);
    echo $output && ! is_wp_error( $output ) ? $output->name : '';
    exit();
}
add_action('wp_ajax_nopriv_county_request', 'ajax_handle_request');
add_action('wp_ajax_county_request', 'ajax_handle_request');

function ajax_get_parent_term_by_id($term_id){
    $parent_term  = get_term_by( 'id', $term_id->parent, 'state');
    return $parent_term;
}

这将返回所请求术语的名称。如果您想在 中显示其他内容#district-county,只需将 更改echo $output && ! is_wp_error( $output ) ? $output->name : '';为您想要显示的任何内容。

于 2012-11-30T14:32:36.727 回答