1

フォームと ajax コールバックを含む .module ファイルを作成しました。.module ファイルの簡単なコードを次に示します。

function form_registration_form($form, &$form_state) {
      $form['registration']['email'] = array(
        '#type'      => 'textfield',
        '#required'  => TRUE,
        '#size'      => 44,
        '#maxlength' => '80',
        '#attributes'=> array('placeholder' => 'Email','data-email'=>'','data-min-chars'=>'5'),
      );
      $form['registration']['password'] = array(
        '#type'      => 'password',
        '#required'  => TRUE,
        '#size'      => 44,
        '#maxlength' => '80',
        '#attributes'=> array('placeholder' => 'Password'),
      );
      $form['registration']['submit'] = array(
        '#value'     => 'SIGN IN',
        '#type'      => 'submit',
        '#submit'    => array('form_registration_handler'),
        );
      return $form;
}
and in the function form_registration_handler I create a session (name it test).
Here is the ajax menu call back function:

function mymodule_menu() {

    $items['ajax/innerAction'] = array(
        'title' => 'Browser Inner Action',
        'page callback' => 'innerActionCallBack',
        'access arguments' => array('access content'),
        'type' => MENU_CALLBACK,
    );

    return $items;
}

function innerActionCallBack() {
    header('Access-Control-Allow-Origin: *');
    drupal_session_start();
    print session_id();
}

この関数は、page.tpl.php ファイルで使用され、サーバーへの ajax を作成します。ここでの問題は、ajax を呼び出すと、ブラウザーを更新するとセッション ID が異なり、以前に作成したセッション テストを取得できないことです。ここで何が起こっているか知っていますか。どんな助けでも本当に感謝しています。

4

1 に答える 1

0

わかりましたので、答えを見つけました。Drupal が正しいセッション ID を取得できるように、最初にユーザーを Drupal にログインする必要があります。

于 2013-07-22T05:22:29.287 に答える