Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794

    Chiamata ajax in un ciclo for

    Salve a tutti,

    in un ciclo for in javascript ho bisogno di fare una chiamata ajax per estrapolare dei dati da una tabella mysql inviando dati alla pagina.
    Mi spiego meglio:
    Ho una pagina 1 dove effettuo un ciclo for da 1 a 30 con un indice i e una pagina 2 che viene richiamata mediante GET di ajax per estrapolare i dati in base al valore di i.

    Inserisco la chiamata ajax nel ciclo for ma succede questo che mi parte la chiamata ajax dopo che i è arrivato a 30 e mi effettua poi per 30 volte la chiamata.

    Dove sbaglio? Qualcuno potrebbe anche indicarmi qualche esempio da studiare?

    Grazie mille e saluti.

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non mandi codice e non so di cosa si possa discutere.
    L'esempio di sotto, per quel che può valere, funziona.
    Ma non è da usare. Meglio fare solo una chiamata, inviando gli n parametri e ricevendo le n risposte tutte in una volta. A te poi l'onere di disassemblare la risposta e utilizzarla nel modo giusto.

    codice:
    function Button1_onclick()
    {
        for(var i = 1; i <= 20; i++)
        {
            ajax("?comando_ajax=0", onload, {"id":i});
        }
    
        function onload()
        {
            var t = this.request.responseText;
            document.getElementById("p1").innerHTML += t + "<br>";
        }
    }
    Pietro

  3. #3
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, bisogna capire meglio come hai strutturato quel ciclo e le relative chiamate AJAX. E' opportuno vedere lo script in questione. Puoi postarlo?

    EDIT:
    come non detto. Ho visto solo ora che Pietro aveva già risposto.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    Quote Originariamente inviata da pietro09 Visualizza il messaggio
    non mandi codice e non so di cosa si possa discutere.
    L'esempio di sotto, per quel che può valere, funziona.
    Ma non è da usare. Meglio fare solo una chiamata, inviando gli n parametri e ricevendo le n risposte tutte in una volta. A te poi l'onere di disassemblare la risposta e utilizzarla nel modo giusto.

    codice:
    function Button1_onclick()
    {
        for(var i = 1; i <= 20; i++)
        {
            ajax("?comando_ajax=0", onload, {"id":i});
        }
    
        function onload()
        {
            var t = this.request.responseText;
            document.getElementById("p1").innerHTML += t + "<br>";
        }
    }
    Ciao e grazie mille per la risposta.

    Non ho messo il codice perché l'altra volta ho scritto un messaggio con il codice e l'amministratore mi ha detto che la prossima volta che scrivevo codice venivo bannato.

    Cmq, qui metto il codice che ho creat io:
    codice:
    for(var i=1; i<=31; i++)
        {
            var day=newd.getDay()+i;
            document.getElementById(day).innerHTML=i;
            var mesio = mes;
            var gig = i;
            var idutente_cal = ("<?=$idutente_cal?>");
    
    
            $.ajax({
            type: "GET",
            url: "cal2.php?data="+gig+"/"+mesio+"/"+an,
            success: function(res){
              
                
                var esito=res;
                
                if (esito=='ok')
                    {
                        document.getElementById(day).style.background="red";
                    }
                }
                    }); 
            
      
           
            
            
        }
    la chiamata ajax me la effettua quando i=31 e me la effettua per 31 volte...
    Ultima modifica di ciro78; 03-08-2016 a 20:14 Motivo: tag code

  5. #5
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Quote Originariamente inviata da ylio82 Visualizza il messaggio
    Ciao e grazie mille per la risposta.

    Non ho messo il codice perché l'altra volta ho scritto un messaggio con il codice e l'amministratore mi ha detto che la prossima volta che scrivevo codice venivo bannato.

    Cmq, qui metto il codice che ho creat io:
    codice:
    for(var i=1; i<=31; i++)
        {
            var day=newd.getDay()+i;
            document.getElementById(day).innerHTML=i;
            var mesio = mes;
            var gig = i;
            var idutente_cal = ("<?=$idutente_cal?>");
    
    
            $.ajax({
            type: "GET",
            url: "cal2.php?data="+gig+"/"+mesio+"/"+an,
            success: function(res){
              
                
                var esito=res;
                
                if (esito=='ok')
                    {
                        document.getElementById(day).style.background="red";
                    }
                }
                    }); 
            
      
           
            
            
        }
    la chiamata ajax me la effettua quando i=31 e me la effettua per 31 volte...
    hum mi sento chiamato in causa (forse...)

    puoi mettere codice nel sito ma devi usare i tag code come hanno fatto gli altri..altrimenti chiudo

    ho ancora modificato io visto che non era chiaro

    in merito al tuo problema mi pare ovvio che la esegue 30 volte...se è in un ciclo
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.