[Javascript] Problema parametro passato con ajax

GGG

Nuovo Utente
31 Ago 2016
33
0
6
24
Salve a tutti,
Ho un problema che si verifica quando effettuo una chiamata con ajax.
Questa chiamata si trova dentro un onclick dentro un ciclo while e passa un solo parametro (id) in POST, solo che questo parametro è sempre diverso e dato che viene eseguita al click di un bottone, passa sempre l'ultimo id del ciclo.
Non so se mi sono spiegato bene ma spero che qualcuno possa darmi una mano
PS: Ho provato anche con eval ma c'è sempre lo stesso problema
 

marino51

Utente Attivo
28 Feb 2013
2.711
140
63
Lombardia
chiamata si trova dentro un onclick dentro un ciclo while
è difficile dare un suggerimento senza vedere il codice, perché mi sembra una situazione non convenzionale,
asserisci che onclick é all'interno di un ciclo while,
ebbene non capisco come si possa "innescare" il ciclo while se la sua "attivazione" avviene da istruzioni interne ad esso
forse non ho capito nulla o forse devi rivedere la logica delle operazioni
attivando con l'onclick il ciclo while,
che raccoglie i parametri
ed al termine le passa alla funzione Ajax,
che a sua volta pubblica i risultati ricevuti
 

GGG

Nuovo Utente
31 Ago 2016
33
0
6
24
Non mi sono saputo spiegare,
ho un ciclo while con dentro questo onclick con dentro questa chiamata ajax, che passa solo un parametro: id, che sarebbe l'indice del ciclo. Dato che è un ciclo e che l'onclick si verifica dopo il caricamento della pagina, la chiamata passa solo l'ultimo indice.
Esempio:
HTML:
<script>
var n = 0;
var tot = 25; //un esempio
while(n < tot){
    $("#button"+n).one("click", function(){
        $.ajax({
            url: "URL",
            type: "POST",
            data: {id: n},
            success: function(){
                //FUNZIONE
            }
        });
    });
    n++;
}
</script>
In questo caso passerà sempre 25 perchè è l'ultimo indice
Spero di essermi spiegato bene
 

marino51

Utente Attivo
28 Feb 2013
2.711
140
63
Lombardia
In questo caso passerà sempre 25 perchè è l'ultimo indice
while crea gli eventi "click" associando il codice, non i valori delle variabili che vengono presi al momento dell'uso
per questa ragione n, rimane fissato al valore massimo raggiunto
l'unico suggerimento che ho in questo momento consiste nel ricavare l'indice dal nome del bottone "#button"+n
prima di richiamare la funzione Ajax
HTML:
    $("#button"+n).one("click", function(){
// qui estrai l'indice dal nome del bottone
        $.ajax({