2012-03-01 95 views
0

我正在使用hook_menu來設置一個鏈接,我通過AJAX應用程序通過JQUERY調用。 我的掛鉤實現如下:Drupal菜單參數的靈活性

function staff_filter_menu(){ 
$items = array(); 
$items['staff/filtering/results/%'] = array(
    'page callback' => 'staff_filter_function', 
    'page arguments' => array(3), 
    'access callback' => TRUE, 
    'type' => MENU_CALLBACK, 
    'delivery callback' => 'staff_filter_deliver', 
); 
return $items; 

}

這個鏈接是我的AJAX應用接觸點,這是一個簡單的文本框,用戶在某些輸入類型。 * staff_filter_function *搜索數據庫並返回一些匹配數據。 Ajax代碼如下:

$.ajax({ 
url: Drupal.settings.CALL_BACK + '/' + $(this).val(), 
success: function($data){ 
     .... more stuff done here 
    } 
}); 

這一切都很好,但對於一個小細節。 我想要允許所有結果顯示的快捷方式。這個快捷鍵只是輸入一個空格。 但是,因爲hook_menu期望在url結尾處有一個參數,所以只要我鍵入空格,我的ajax請求就會失敗。當我輸入真實內容時,它完美地工作。

這僅僅是爲了完整性和它一個不錯的功能...如果任何人都可以分享一些想法,我會非常大感激。

回答

1

也許你不需要在URL的末尾添加一個參數。 只是讓你的代碼更改爲以下:

function staff_filter_menu(){ 
$items = array(); 
$items['staff/filtering/results'] = array(
    'page callback' => 'staff_filter_function', 
    'access callback' => TRUE, 
    'type' => MENU_CALLBACK, 
    'delivery callback' => 'staff_filter_deliver', 
); 
return $items; 

,並給你頁面的回調函數

function staff_filter_function($my_arg = "") 
{ 
// your code goes here 
} 

輕微的變化,你可以把$ my_arg爲您的頁面參數。

希望它有效, 穆罕默德