加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将AJAX放在Joomla模块中

发布时间:2020-12-16 02:49:53 所属栏目:百科 来源:网络整理
导读:我为我的网站制作了一个基本的Joomla模块作为shoutbox.但我想把 AJAX放进去(我知道在JED上已经存在类似的AJAX模块,但这更像是一个让我学习AJAX如何在Joomla模块中工作的项目). 您重定向到新的PHP文件的常见AJAX内容显然不起作用,因为该文件不会被定义为 defi
我为我的网站制作了一个基本的Joomla模块作为shoutbox.但我想把 AJAX放进去(我知道在JED上已经存在类似的AJAX模块,但这更像是一个让我学习AJAX如何在Joomla模块中工作的项目).

您重定向到新的PHP文件的常见AJAX内容显然不起作用,因为该文件不会被定义为

defined('_JEXEC') or die('Restricted access');

将在新页面中失败.并且将_JEXEC定义为等于一(就像我在SO上的几篇文章中所读到的那样),就我在Joomla Docs上阅读而言,这是一个安全风险,因为它为网站提供了一个切入点.

我见过的other shoutbox module的方法是指向helper.php文件中的一个函数.这对我来说很有意义,因为通常应该存储所有功能.但是我不清楚模块如何访问onSubmit()(或相关)命令上的helper.php文件,并希望有人可以对此有所了解.

我实际上并不需要任何特定于我的shoutbox模块的东西 – 这更像是如何在Joomla模块中获得AJAX功能以及如何安排它的问题

解决方法

另外两个是在正确的轨道上你需要记住,当你进行AJAX调用时,你无法直接访问Joomla中的php文件.所以最好是调用你的模块.在这种情况下,让模块检查POST或URL中的变量.

我是JQuery的ajax的粉丝,它比构建该shoutbox的人使用的方法更加独立.

$( "#addShout" ).click( function(event,ui) {
                $.ajax({
                    type: 'GET',url: "<?php echo JURI::base() . "index.php?option=mod_mymodule&task=getCustomerJson&selectedCustomer="?>"  + encodeURIComponent(value),success:function(data){
                        $('#shouts').append(data);
                    },error:function(){
                        $('#errors').html('<p class="error"><strong>Oops!</strong> Try that again in a few moments.</p>');
                    }
                });  
        });

然后正如我在对Valentin的评论中提到的那样:

$task = JRequest::getVar('task'); 
if($task == "getCustomerJson"){mySuperHelper::getCustomerJson();}

只有在存在变量时才调用必要的函数.

为了解释部分过程,它有点像这样:

>如果POST或URL中没有变量,它将以Joomla期望的方式显示模块.
>如果检测到变量,则调用方法将其添加到数据库,并将javascript函数添加到显示中.还可以防止正常显示发生.

您引用的模块非常有趣.主要文件引用的辅助函数执行模型通常在MVC中处理的函数,而Javascript也有点全面.如果你真的想要了解它是如何工作的,你真的需要深入了解fatAjax.js文件,因为它包含所有的AJAX并设置mod_shoutbox.php监听的变量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读