5

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

4

1 回答 1

2

根据您的问题和进一步的评论,您应该将您的代码(或至少它的调用)移动到组件中。只有组件可以“调用”。有很多选项,但为了简单起见,您至少需要(在组件中):

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

  2. 您粘贴到模块中的函数,我们暂时称它为 timemodule,并且getTimetable($day)需要公开。

  3. controller:getTimetable()功能将

    3.a. 解析和清理 day 参数输入;

    3.b。实例化模块 timemodule

    3.c。实例化视图,注入模块,让它从 db 加载结果并

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

    3.e。声明(所以exitJoomla 不会渲染模板和其他模块(你想要的只是 json/xml 输出)。

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

于 2013-09-15T07:52:16.130 回答