在Drupal 7中加載異步數據的最佳方式是什麼?在Drupal 7中使用AJAX加載數據的最佳方式
當然,我用我自己的節點加載我的數據與jQuery。我已經建立了一個自己的menu_hook,它可以在/events
之下/events/2012-04-17
此頁面也適合正常瀏覽。我檢查是否設置了$_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;
}
Try exit();函數 – niksmac 2012-04-18 03:37:46
@NikhilMohan AFIK是[die](http://php.net/manual/en/function.die.php)退出的別名不是嗎? – rekire 2012-04-18 05:17:58
只需注意其他你需要發送Vary頭文件,以避免瀏覽器顯示緩存的JSON響應,而不是HTML。 – rekire 2013-12-28 11:18:54