Il n'y a pas de façon officielle de faire de l'ajax à partir d'un module.
Si vous où développer un composant que vous pouvez appeler votre composant avec index.php?option=com_yourcomponent&task=getjsondata&view=yourview&format=json
De cette façon, votre fichier views/yourview/view.json.php
serait appelé et là, vous pouvez obtenir vos données les envoient echo json_encode(array("success"=>true)); jexit()
s'il vous plaît noter que l'utilisation de jexit()
insted o exit()
Si vous avez vraiment besoin de faire ajax d'un module est ici un hack pour importer joomla dans vos fichiers
<?php
if (! class_exists('JFactory')) {
define('DS', DIRECTORY_SEPARATOR);
$rootFolder = explode(DS,dirname(__FILE__));
$currentfolderlevel = 2;
array_splice($rootFolder,-$currentfolderlevel);
$base_folder = implode(DS,$rootFolder);
if(is_dir($base_folder.DS.'libraries'.DS.'joomla'))
{
define('_JEXEC', 1);
define('JPATH_BASE',implode(DS,$rootFolder));
require_once (JPATH_BASE .DS.'includes'.DS.'defines.php');
require_once (JPATH_BASE .DS.'includes'.DS.'framework.php');
// Joomla is loaded! horray!
$email = JRequest::getVar('email');
$tags = implode(",",JRequest::getVar('tags',array()));
$db = JFactory::getDbo();
$db->setQuery("INSERT INTO `#__newsletter_users` (email,tags) VALUES('$email','$tags')");
$db->query();
}
}
?>
Créez un fichier comme celui-ci (save_email.php
pour moi) dans votre dossier de module et appelez-le directement. Voici un morceau de mon modèle de modules:
$.get('<?php echo JUri::base()."modules/mod_newsletter/save_email.php?email=" ?>'+email, function(data) {
console.log(data);
modal.hide();
});