2013-01-21 54 views
1

在我的Joomla 2.5.x站点上,我想添加链接,打开Fancybox窗口,用邮件形式在其中输入邮件和地址。提交后,插件将验证并将邮件发送给正确的收件人。Joomla 2.5内容插件与Ajax

我写了插件,并陷入了一个问题:如何让Ajax调用正在做数据库工作人员和发送邮件的PHP脚本。

如果我使用以下网址:

$.ajax({ 
    type: 'POST', 
    url: ''/my_site/plugins/content/my_plugin/sendmessage.php', 
     ... 

PHP脚本是出的Joomla参考的,它关闭是由于:

defined('_JEXEC') or die(); 

和Joomla功能不工作。 有办法解决这个像添加以下人员到PHP脚本:

<?php 
define('_JEXEC', 1); 

// JPATH_BASE should point to Joomla!'s root directory 
define('JPATH_BASE', realpath(dirname(__FILE__) .'/')); 
define('DS', DIRECTORY_SEPARATOR); 
require_once (JPATH_BASE .DS.'includes'.DS.'defines.php'); 
require_once (JPATH_BASE .DS.'includes'.DS.'framework.php'); 
$mainframe =& JFactory::getApplication('site'); 
$mainframe->initialise(); 
$user =& JFactory::getUser(); 
$session =& JFactory::getSession(); 
?> 

但我不知道这种解决方法的安全性。我更喜欢干净的解决方案。 我搜索了很多,并且发现了正确的方法是创建一个PHP函数,把它添加到控制器,并从阿贾克斯以下列方式调用它:

$.ajax({ 
    type: 'POST', 
     url: 'index.php?option=com_mycomponent&format=raw&task=mytask'; 
     ... 

但就是这种方式可能仅适用于一个组件?我需要的是一个插件。我怎样才能运行一个简单的Ajax调用到一个插件的PHP函数/脚本?任何帮助将不胜感激,我正在寻找退出一段时间的解决方案。

回答