2012-11-30 58 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