Drupal 7 で非同期データをロードする最良の方法は何ですか?
現在、自分のノードを使用して jQuery でデータをロードしています。aviable な独自の menu_hook を作成しました。/events
たとえば/events/2012-04-17
、このページは通常のブラウジングでも aviable です。が設定されているかどうかを確認$_SERVER['HTTP_X_REQUESTED_WITH']
し、JSON 文字列でデータを返し、データを解析します。
キャッシング技術を有効にすると、問題が発生する可能性はありますか? または、データをロードするためのより良い方法はありますか? die()
他に何ができるかでスクリプトを強制終了しているため、これはブーストでは機能しないようです。
function my_module_menu() {
$items['events'] = array(
'page callback' => 'event_page',
'access callback' => TRUE,
'type' => MENU_LOCAL_TASK,
);
$items['events/%date'] = array(
'page callback' => 'event_page',
'page arguments' => array(2),
'access callback' => TRUE,
'type' => MENU_VISIBLE_IN_BREADCRUMB,
);
return $items;
}
function event_page($date=null) {
$build=array();
// add some other "controls"
$build['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
if((isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 'XMLHttpRequest' == $_SERVER['HTTP_X_REQUESTED_WITH']) || strpos($_SERVER['REQUEST_URI'], '?json')!==FALSE) {
header('Cache-Control: no-cache, must-revalidate');
header('Content-type: application/json', true);
$json=loadData();
die(json_encode($json));
}
return $build;
}