it-swarm-eu.dev

Invio POST dati all'interno del modulo - AJAX

I requisiti per questa attività sono: NON posso usare alcun tipo di componente (com_ajax è fuori dall'elenco delle opzioni)

OBIETTIVO: inviare i dati dei post se le caselle di controllo sono "spuntate" utilizzando ajax nel modulo personalizzato.

  1. Il mio AJAX è corretto? Per essere precisi, se l'URL è giusto? So che 'definito (' _ JEXEC ') o die;' non consente di inviare dati di post a file specifici come questo, ma anche se lo commento, non riesco a ottenere POST. Cosa potrebbe esserci di sbagliato? Provo ad accedere ai dati POSTED in mod_test.php con print_r ($ _ POST) ;

  2. Esiste un modo alternativo per inviare i dati pubblicati (non utilizzando i componenti) al mio file helper.php/mod_test.php del mio modulo? Sono aperto al brain-storming creativo.

      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>
    

Qualsiasi esempio di codice reale sarebbe impeccabile.

2
Wizzy1996

Dovresti usare Joomla`s com_ajax.

Il modo per raggiungere il tuo obiettivo è:

Cambia url in

index.php?option=com_ajax&ignoreMessages&module=YMODULE&method=YMETHOD&format=json

Inoltre è necessario creare l'helper del modulo in:

/modules/mod_YMODULE/helper.php

e inserisci la classe come ModYMODULEHelper lì.

L'ultimo passo è posizionare il metodo di elaborazione lì come: public function YMETHODAjax(){return true;}

È praticamente tutto.


per semplificare e utilizzare i valori predefiniti:

url => index.php?option=com_ajax&module=YMODULE&format=json

processing method to use => public function getAjax(){return true;}

Ma questo senza &ignoreMessages Non riceverai messaggi di sistema da JFactory::getApplication()->enqueueMessage()


Inoltre puoi controllare la strategia del plugin che ho descritto in risposta a un altro post: sando AJAX in un modulo personalizzato - come farlo?

2
Alexandr

Ciò che Alexandr ha scritto è corretto. Solo 2 cose:

1.- Non è necessario alcun ID menu

2.- Non fare come me: registra il modulo YMODULE hai creato nelle estensioni della tabella (ricorda di aggiungere mod )

0
Jaume J.