web-dev-qa-db-fra.com

Envoi POST données dans le module - AJAX

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é.

  1. 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) ;

  2. 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.

2
Wizzy1996

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?

2
Alexandr

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 )

0
Jaume J.