我正在使用hook_menu来设置一个链接,我通过JAXERY从一个AJAX应用程序调用它。 我的钩子实现如下:
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请求都会失败。当我输入真实内容时,它非常有效。
这只是为了完整性而且很有特色...如果有人可以分享一些想法,我会非常感激。
答案 0 :(得分: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视为您的网页参数。
希望它有效, 穆罕默德