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

    impostare un tempo di attesa tra chiamate ajax

    ...pensavo fosse la cosa più semplice ed invece mi sono infognato....
    premetto che mi sto muovendo per le prime volte con ajax e forse
    faccio qualche errore nella comprensione delle chiamate asincrone comunque sia
    la mia idea era di avere la funzione script() attivata dall'inserimento di un valore in un campo testuale.questa scatena n Richieste che mi compilano altri div

    mycodcli è il codice clienteche inserisco nella input
    elementoid e il div dove il risultato della pagina ajax deve finire.

    per funzionare funziona tutto, ma la prima chiamata a Richiesta() ogni tanto mi da come risultato "loading..." e non carica pù nulla...io credevo che usando XMLHTTP.readyState
    lui continuasse a provare sino a che non sentisse un risultato invece pare che se trova
    XMLHTTP.readyState == 1 non ci prova pìu....

    altro particolare: facendo il debug quindi passo passo probabilmente ha più tempo e in "loading..." non arriva quasi mai....

    ma secondo voi il problema è il tempo tra le due richieste? sugerrimenti errori palesi che compio....
    javascript:void(0);
    Confused

    codice:
    var XMLHTTP,mycodcli,myresponsabile,mymail;
    	
    	function script() {
    			
    		mycodcli=document.getElementById("Cliente").value;
    			
    		Richiesta(mycodcli,"Mail","CN.CLI")
    		Richiesta(mycodcli,"Responsabile","CN.COL")	
    		
    		var e2 = document.getElementById("MailResponsabile"); 				
    		
    	}		
    					  
    	function Richiesta(Stringa,elementoid,TipoParametro)
    	{
    		if (Stringa.length > 0)
    		{
    			//alert(TipoParametro);
    		var url = "ajax.asp?nome=" + Stringa.toUpperCase() + "&tipoparametro=" + TipoParametro.toUpperCase();
    			XMLHTTP = RicavaBrowser(function() {CambioStato(elementoid,TipoParametro)});
    			XMLHTTP.open("GET", url, true);
    			XMLHTTP.send(null);
    		}
    		else
    		{
    			document.getElementById(elementoid).innerHTML = "";
    		} 
    	}
    	
    	function CambioStato(elemento,TipoParametro)
    	{
      		if (XMLHTTP.readyState == 1) 
    		{ 
    			var R = document.getElementById(elemento);		
    			R.innerHTML='loading...';
    		}
    		
    		if (XMLHTTP.readyState == 4)
    		{	
    			
    			var R = document.getElementById(elemento);		
    			R.innerHTML=TipoParametro+XMLHTTP.responseText ;
    		}
    	}
    	
    	function RicavaBrowser(QualeBrowser)
    	{
    		if (navigator.userAgent.indexOf("MSIE") != (-1))
    		{
    			var Classe = "Msxml2.XMLHTTP";
    			if (navigator.appVersion.indexOf("MSIE 5.5") != (-1));
    			{
    				Classe = "Microsoft.XMLHTTP";
    			} 
    			try
    			{
    				OggettoXMLHTTP = new ActiveXObject(Classe);
    				OggettoXMLHTTP.onreadystatechange = QualeBrowser;
    				return OggettoXMLHTTP;
    			}
    			catch(e)
    			{
    				alert("Errore: l'ActiveX non verrà eseguito!");
    			}
    		}
    		else if (navigator.userAgent.indexOf("Mozilla") != (-1))
    		{
    			OggettoXMLHTTP = new XMLHttpRequest();
    			OggettoXMLHTTP.onload = QualeBrowser;
    			OggettoXMLHTTP.onerror = QualeBrowser;
    			return OggettoXMLHTTP;
    		}
    		else
    		{
    			alert("L'esempio non funziona con altri browser!");
    		}
    	}

  2. #2
    Scommetto che ti da problemi con IE quando premi il pulsante aggiorna... succede pure a me. Con Firefox non ho mai avuto di questi problemi.

    Apparte questo evita di fare tante richieste una dopo l'altra: massimo due.

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.