・・・・・・ // ここで、ajax_commandの使用方法を省略 $commands[] = ajax_command_append("head", "<script type='text/javascript' src='/your/module/path/test.js"></script>" ); return array('#type' => 'ajax', '#commands' => $commands);
/** * Implementation of hook_menu() * 新規フォームを表示するページのメニュー設定 */ function my_module_name_menu() { $items['test/form'] = array( 'title' => 'Ajaxテスト', 'page callback' => 'drupal_get_form', 'page arguments' => array('my_sample_form'), 'access arguments' => array('access content'), ); } /** * フォームの各要素の記述 */ function my_sample_form($form, &$form_state){ // メッセージ入力フィールド $form['message'] = array( '#type' => 'textfield', '#title' => t('メッセージを入力'), ); // 入力されたメッセージをajaxで表示する場所 $form['msg_wrapper'] = array( '#type' => 'markup', '#markup' => "", '#prefix' => '<div id="msg-wrapper">', '#suffix' => '</div>', ); // サブミットボタン $form['submit'] = array( '#type' => 'submit', '#value' => '送信', '#ajax' => array( 'callback' => 'test_sample_form_ajax_callback', 'wrapper' => 'msg-wrapper', 'effect' => 'fade', ), ); return $form; } /** * ajaxに呼び出される関数 */ function test_sample_form_ajax_callback($form, $form_state) { // 入力されたメッセージを指定した場所にセット $form['msg_wrapper']['#markup'] = '入力されたメッセージ:' . check_plain($form_state['values']['message']) ; // 置換する部品を返す return $form['msg_wrapper'] ; }
/** * Implements hook_init(). */ function YOUR_MODULE_NAME_init() { drupal_add_js('misc/jquery.form.js'); drupal_add_library('system','drupal.ajax'); }
<a href="text/ajax/nojs/1234" class="use-ajax">ajaxリンク</a>
/** * Implements hook_init(). */ function test_module_init() { drupal_add_js('misc/jquery.form.js'); drupal_add_library('system','drupal.ajax'); } /** * Implementation of hook_menu() */ function test_module_menu() { $items['test/ajax/%/%']=array( // URLの2,3番目がクライアント側で生成 'page callback' => 'ajax_node_response', 'page arguments' => array(2,3), // URLの2,3番目の引数をコールバック関数に渡す 'access callback' => 'user_access', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); return $items; } function ajax_node_response($type="ajax", $nid=0){ $node = node_load( $nid, NULL, false ); $vnode = node_view($node); $output = theme('node', $vnode); if( $type="ajax" ){ $commands=array(); $commands[]=ajax_command_replace( '#block-system-main','<section id="block-system-main">'.$output.'</section>' ) ; $page = array( '#type' => 'ajax', '#commands' => $commands, ); ajax_deliver( $page ) ; // ajax対応ブラウザの結果 } else { $output = '<div id="content">'.$output.'</div>'; // ajax非対応ブラウザの結果 return $output; } }