您重定向到新的PHP文件的常见AJAX内容显然不起作用,因为该文件不会被定义为
defined('_JEXEC') or die('Restricted access');
将在新页面中失败.并且将_JEXEC定义为等于一(就像我在SO上的几篇文章中所读到的那样),就我在Joomla Docs上阅读而言,这是一个安全风险,因为它为网站提供了一个切入点.
我见过的other shoutbox module的方法是指向helper.PHP文件中的一个函数.这对我来说很有意义,因为通常应该存储所有功能.但是我不清楚模块如何访问onSubmit()(或相关)命令上的helper.PHP文件,并希望有人可以对此有所了解.
我实际上并不需要任何特定于我的shoutBox模块的东西 – 这更像是如何在Joomla模块中获得AJAX功能以及如何安排它的问题
解决方法
我是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监听的变量.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。