我目前正在使用PHP编写时间表应用程序。
我想要做的是为一周中的每一天设置一个按钮,当用户点击每个按钮时,使用JavaScript将当天列出的任务加载到浏览器窗口中。
我目前的代码是:
<?php
class loadTimetable
{
public static function getTimetable( $params )
{
//Obtain a database connection
$db = JFactory::getDbo();
//Retrieve the shout
$query = $db->getQuery(true)
->select($db->quoteName('title'))
->from($db->quoteName('#__timetable'))
->where('day = '. $db->Quote($params));
//Prepare the query
$db->setQuery($query);
// Load the row.
$result = $db->loadResult();
//Return the Hello
return $result;
}
}
$day = date("N");
$timetable = getTimetable($day);
?>
<h1><?php echo $timetable; ?></h1>
该功能在Joomla内部,经过测试可以正常工作。我需要的帮助是如何使用Javascript / AJAX调用该函数。
据我所知,所有Javascript必须做的是调用所选日期的函数(例如getTimetable(1)
,其中1是HTML中星期一按钮的值)。
答案 0 :(得分:2)
根据您的问题和进一步的评论,您应该将代码(或至少其调用)移动到组件。只能“调用”组件。有很多选择,但要保持简单,至少需要(在组件中):
控制器中的任务,即将接收ajax调用的函数getTimetable()
;
这也可以在子控制器中完成。对于控制器,如果是子控制器index.php?option=com_yourcomponent&task=getTimetable&day=2011-09-17
task=subcontroller.getTimetable
调用它
您在模块中粘贴的功能,我们暂时称它为timemodule,getTimetable($day)
需要公开。
controller:getTimetable()
功能
3.A。解析并清理day参数输入;
3.B。实例化模块timemodule
3.C。实例化视图,注入模块,让它从db和
加载结果 3.D。调用视图的render()
方法
3.E。 exit
语句(因此Joomla不会呈现模板和其他模块(你想要的只是json / xml输出)。
当然,还有很多选择;在控制器中,您可以使用setUserState
设置日变量,然后重定向到视图,并使用模块中来自userstate的变量;这真的是一个偏好问题,你要记住的是exit
语句应该在呈现输出的循环中调用,所以如果你重定向,你将在视图的display()
中调用它。方法。您也可以将&format=json
附加到您的网址上以实现此目的。