使用Javascript从Joomla加载数据

时间:2013-09-15 01:02:25

标签: javascript jquery ajax joomla

我目前正在使用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中星期一按钮的值)。

1 个答案:

答案 0 :(得分:2)

根据您的问题和进一步的评论,您应该将代码(或至少其调用)移动到组件。只能“调用”组件。有很多选择,但要保持简单,至少需要(在组件中):

  1. 控制器中的任务,即将接收ajax调用的函数getTimetable(); 这也可以在子控制器中完成。对于控制器,如果是子控制器index.php?option=com_yourcomponent&task=getTimetable&day=2011-09-17

  2. ,您将使用task=subcontroller.getTimetable调用它
  3. 您在模块中粘贴的功能,我们暂时称它为timemodule,getTimetable($day)需要公开。

  4. controller:getTimetable()功能

    3.A。解析并清理day参数输入;

    3.B。实例化模块timemodule

    3.C。实例化视图,注入模块,让它从db和

    加载结果

    3.D。调用视图的render()方法

    3.E。 exit语句(因此Joomla不会呈现模板和其他模块(你想要的只是json / xml输出)。

  5. 当然,还有很多选择;在控制器中,您可以使用setUserState设置日变量,然后重定向到视图,并使用模块中来自userstate的变量;这真的是一个偏好问题,你要记住的是exit语句应该在呈现输出的循环中调用,所以如果你重定向,你将在视图的display()中调用它。方法。您也可以将&format=json附加到您的网址上以实现此目的。