0

私はhook_menuを使用して、AJAXアプリケーションからJQUERYを介して呼び出しているリンクを設定しています。私のフックの実装は次のとおりです。

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
    }
});

それはすべて完全にうまく機能しますが、1つの小さな詳細があります。 すべての結果を表示できるショートカットを許可したいと思います。このショートカットは、単に1つのスペースを入力するだけです。ただし、hook_menuはURLの最後に引数を期待しているため、スペースを入力するたびにajaxリクエストは失敗します。実際のコンテンツを入力すると、完全に機能します。

これは完全を期すためのものであり、機能があるのは素晴らしいことです...誰かがいくつかのアイデアを共有できれば、私は非常に素晴らしいでしょう。

4

1 に答える 1

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 をページ引数として扱うことができます。

それがうまくいくことを願っています、ムハンマド

于 2012-03-11T08:24:57.973 に答える