La configuration requise pour cette tâche est - je ne peux utiliser aucun type de composant (com_ajax est en dehors de la liste des options)
OBJECTIF: envoyer les données de publication si les cases à cocher sont cochées en utilisant ajax dans le module personnalisé.
Est-ce que mon code AJAX est correct? Pour être précis, si l'URL est correcte? Je sais que 'défini (' _ JEXEC ') ou die;' ne permet pas d'envoyer des données de publication à un fichier spécifique comme ceci, mais même si je le commente, je ne parviens pas à obtenir les données POST. Qu'est-ce qui pourrait mal se produire? J'essaie d'accéder aux données POSTED dans mod_test.php avec print_r ($ _ POST) ;
Existe-t-il un autre moyen d’envoyer des données publiées (sans utiliser de composants) dans le fichier helper.php/mod_test.php de mon module? Je suis ouvert à la réflexion créative.
function function1() {
var data = $("[name='form1']").serialize();
$.ajax({
url: "modules/mod_test/mod_test.php",
type: "POST",
async: true,
cache: false,
data: data,
success: function(data){
alert(data);
}
});
}
<form method="post" action="this.form.submit();" name="form1">
<input type="checkbox" name="checkboxList[]" onclick="function1();" value="1">value1</input>
<input type="checkbox" name="checkboxList[]" onclick="function1();" value="2">value2</input>
<input type="checkbox" name="checkboxList[]" onclick="function1();" value="3">value3</input>
</form>
Tout exemple de code réel serait sans faille.
Vous devez utiliser le com_ajax de Joomla.
Le moyen d'atteindre votre objectif est:
Remplacez url
par
index.php?option=com_ajax&ignoreMessages&module=YMODULE&method=YMETHOD&format=json
Aussi, vous devez créer un module assistant à:
/modules/mod_YMODULE/helper.php
et placez la classe comme ModYMODULEHelper
ici.
La dernière étape consiste à y placer la méthode de traitement, comme par exemple: public function YMETHODAjax(){return true;}
C'est à peu près tout.
pour simplifier et utiliser les valeurs par défaut:
url
=> index.php?option=com_ajax&module=YMODULE&format=json
processing method to use
=> public function getAjax(){return true;}
Mais ceci sans &ignoreMessages
Vous ne recevrez pas de messages système de JFactory::getApplication()->enqueueMessage()
Vous pouvez aussi vérifier la stratégie de plugin que j'ai décrite en réponse à un autre message: tiliser AJAX dans un module personnalisé - comment le faire?
Ce que Alexandr a écrit est correct. Juste 2 choses:
1.- Aucun identifiant de menu n'est-il nécessaire
2.- Ne faites pas comme moi: s'il vous plaît, inscrivez le module YMODULE vous avez créé dans le tableau des extensions (n'oubliez pas d'ajouter le mod )