如何在Joomla模块中使用jQuery ajax

我正在创建一个模块,在我的主PHP文件中,我添加了对Javascript文件的引用。 在那个Javascript文件中,我在dom上做了一个jQuery调用,它执行一个Ajaxpost来获取div的初始内容。 它发布的URL是另一个PHP文件(gateway.php),它是我模块的一部分。 (此gateway.php调用远程服务器来获取内容。)

嗯,模块文件通常禁止直接访问。 我可以注释掉禁止直接访问的代码行。 即使这样做,出于某种原因,似乎我的gateway.php无法完全访问Joomla中的所有内容。 例如,gateway.php需要my helper.php文件。 我只是在做

require_once(dirname(__FILE__) . DS . 'helper.php'); 

据我所知,这是包含文件的标准方法。 但是,我收到的错误表明DS没有被翻译为Joomla中定义的值。 它将DS视为字符串值。

如果我改成它

 require_once(dirname(__FILE__) . '/helper.php'); 

然后我得到直接访问禁止错误。

知道这里发生了什么,或者在主PHP模块文件以外的文件中使用Joomla模块中的Ajax的正确方法?

除非有特殊原因你绝对需要这样做,否则你应该总是通过Joomla的index.php文件进行调用。 不要尝试调用单个PHP文件,除非它们100%独立于Joomla。 对defined( '_JEXEC' ) or die( 'Restricted access' );的调用defined( '_JEXEC' ) or die( 'Restricted access' ); 在Joomla中每个.php文件的顶部有一个原因:你想要最小化进入Joomla的入口点数。

要进行从Joomla中检索数据的AJAX / JSON调用,您需要创建一个与模块一起使用的小组件。 几个月前我写了一篇关于这篇文章的博客文章: http : //www.designvsdevelop.com/the-way-not-to-do-javascript-in-joomla