【问题标题】:How to make AJAX call to myself from Joomla! module?如何从 Joomla 给自己打 AJAX 电话!模块?
【发布时间】:2011-10-08 23:13:11
【问题描述】:

我编写了一个依赖于某些第三方设备(加载、解析和显示)的模块。有时它需要 5 秒才能做出响应,所以我尝试对这部分进行 ajaxify。

我的 Joomla!模块已准备好以及带有 AJAX(mootools)的代码,但我无法确定访问由 Joomla“注入”的模块 php 文件的 URL! (类似于 /index.php?option=com_content)。我可以硬编码并访问它(/modules/mod_a/xyz.php),但我会遇到“不允许直接访问”,这没问题,但我没有 Joomla!我非常想念的上下文。

我发现的所有组件都使用了我非常想避免的组件。

感谢您的建议,

问候,

马雷克

【问题讨论】:

  • 唯一的办法就是创建一个组件。这将允许您调用 url。
  • :sigh: 这就是我害怕的。我可以做 XSS/CORS 并在 JS 中解析数据,但组件似乎更可行......

标签: ajax url module joomla


【解决方案1】:

您无法通过 url 访问您的模块。为此目的,使用一个模型和一个视图创建非常简单的组件的唯一方法。或者,您可以将一个task 添加到您站点中安装的组件之一。

【讨论】:

    【解决方案2】:

    我确实写了我能写的最简单的组件(没有 MVC):

    defined('_JEXEC') or die('Restricted access');
    $task = JRequest::getWord('task');
    if ($task == "getCurrentTemp") {
     // return temperature
    }
    

    这可以通过 JURI::current()."index.php?option=com_xzy&task=getCurrentTemp" 打印(heredoc)到 JS。 无法访问模块有点糟糕,但我从架构的角度理解这一点。

    【讨论】:

    • 简单组件创建完成后,如何从模块的default.php中获取返回值?我是否必须包含组件的文件才能获取它们的类,以便我可以访问方法-功能-任务?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多