2012-11-30 37 views
0

我有一个包含分类术语(thrid level terms)的下拉菜单,当选择一个术语时,我想通过ajax请求显示其父项。但由于某种原因,我得到的值是“0”而不是父项值。谁能帮,检查我的代码,看看我在这里失踪:从ajax请求中获得“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; 
} 

回答

1

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

// 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 : '';更改为想要显示的内容即可。

+0

感谢寻找这个。我试过你的代码,但它没有返回任何值。我改变“回声”线,只是“返回$输出”,并返回“0”像以前..任何想法? – kumo99

+0

问题是,在'/ wp-admin/admin-ajax.php'的最底部,你有'die'('0');'这实际上是给你一个“0”的东西。当您执行'return ...'时,返回值,并且由于您的函数是从动作钩子调用的,所以返回的值不会显示或任何内容。请尝试在'return ...'行之前添加'var_dump($ output);'并将其输出给我。 –

+0

谢谢,这是var_dump的输出:bool(false)0 – kumo99

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; 
} 
+0

我不能,它说:“你可以在23小时内接受你自己的答案” – kumo99