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