Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Ajax - quesito su form ed evento onkeyup da ritardare

    Eccomi con l'ennesima questione.
    Utilizzo un form in ajax che che fa richieste di dati da un server esterno.
    codice:
    onkeyup="javascript:get(this.Node);"
    Come sapete l'evento onkeyup fa (nel mio caso), le richieste al server man mano che si digita però succede che se la parola digitata è più lunga di quattro/cinque caratteri il server mi risponde con un bel "exceeded query server quota".
    Dato che non posso modificare il numero massimo di query che è possibile fare al server, ho pensato a questo punto di fare in modo che la richiesta parta dopo X tempo dal termine della digitazione dell'ultima lettera.
    E' possibile farlo senza stravolgere lo script?

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Usa un flag: lo setti quando parte una richiesta ajax e lo resetti quando questa e' completata... interrogandolo saprai se e' possibile lanciare una nuova richiesta.

    Se nel contempo gestisci anche le code (memorizzi la nuova richiesta per lanciarla automaticamente al termine della precedente) ...


    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Originariamente inviato da br1
    Usa un flag: lo setti quando parte una richiesta ajax e lo resetti quando questa e' completata... interrogandolo saprai se e' possibile lanciare una nuova richiesta.

    Se nel contempo gestisci anche le code (memorizzi la nuova richiesta per lanciarla automaticamente al termine della precedente) ...


    ciao
    Ciao br1, ci si ritrova.

    Interessante quanto hai scritto ma tradotto in niubbico?
    Io avevo pensato a qualcosa di semplicissimo da applicare tipo il settimeout() et similia ma mi rendo conto che poco cambierebbe perché dopo il tempo X impostato le richieste partirebbero ugualmente una alla volta.

    Non puoi farmi un esempio di quelli proprio terra terra per quanto dici tu?
    Ho trovato qui sul forum questa discussione ma non sono sicurissimo che faccia per me e soprattutto come eventualmente applicarla.

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Questo e' di qualche tempo fa... ho aggiunto diversi commenti
    codice:
    var xon; // segnala una ricerca in corso
    var xtm; // il timer
    var xst=""; // la stringa della prossima ricerca
    var xmlhttp ;
    if (window.XMLHttpRequest) { 
    	xmlhttp = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
    	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    function completa(str){
    	if (xon) {
    		xst = str; // memorizzo la nuova stringa di ricerca
    		if (!xtm) 
    			xtm = setTimeout('completa(xst)',100); // il primo avvio del timer
    	} else { 
    		$("sotto").innerHTML = ""; // azzero il div
    		if (str.length >= 3) { // minimo tre caratteri per la ricerca
    			$('sotto').innerHTML = "Attendere..."; // azzero il div che riceve il risultato
    			if (xtm) 
    				clearTimeout(xtm);	// resetto il timer se attivo ( la ricerca e' finita prima)
    			xtm = false; // segnalo che il timer non e' attivo
    			xon = true; // segnalo una nuova ricerca in corso
    			xmlhttp.open("GET", "failaricerca.asp?parametro="+str, true); // interrogo il server
    			xmlhttp.onreadystatechange = function() {
    				if (xmlhttp.readyState==4) { // trattamento del risultato 
    					risposta =  xmlhttp.responseText;
    					$("sotto").innerHTML = ""; // azzero il div
    					if (risposta!="ERRORE") {
    						$('sotto').innerHTML == risposta; 
    					}
    					xon = false; // la ricerca e' finita
    				}
    			}
    			xmlhttp.send(null)
    		}
    	}
    }
    function $(s) {return document.getElementById(s);}
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

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.