Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    ajax: è possibile con firefox 1.5 mandare richieste sincrone?

    codice:
    objHTTP.open('GET', "pagina.asp", false);
    Vorrei sapere, per cortesia, se con Firefox 1.5 sia possibile mandare richieste ajax in modo sincrono, cioè utilizzando false nell'ultimo parametro

    Pietro

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    si

    ma credo che la tua domanda sia un altra.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da fcaldera
    si

    ma credo che la tua domanda sia un altra.
    Sto facendo un po' di esperimenti ma quando sembra che abbia risolto nascono i problemi

    Ho questa pagina asp, a_action.asp:
    codice:
    <% Response.Write("Ciao, Mondo!") %>
    Restituisce semplicemente la stringa "Ciao, Mondo!"


    Ho la pagina a.htm. Mando il codice per eventuale collaudo
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Untitled Page</title>
    <script language="javascript" type="text/javascript">
    <!--
    
    function Button1_onclick() 
    {
    	//creazione oggetto per richiesta web
    	var objHTTP = getXMLHttp();
    	
    	
    	//apertura connessione HTTP
    	//1° parametro, GET, POST, HEAD
    	//2° parametro, risorsa da richiedere
    	//3° parametro, asincrona=true, sincrona=false
    	objHTTP.open('GET', 'a_action.asp?r=' + Math.random(), false);
    	
    	//impostazione della funzione di callback
    	objHTTP.onreadystatechange = function() 
    	{
    		if (objHTTP.readyState == 4) 
    		{
    			if (objHTTP.status != 200) { alert("ERRORE NELLA TRASMISSIONE DATI!"); return;}
    			
    			var t = objHTTP.responseText;
    			
    			document.getElementById("div1").innerHTML = t; alert(t);
    		}
    	
    	};
    	
    	//invio della richiesta, per GET e HEAD è null
    	objHTTP.send(null);
    
    }
    
    
    
    // --------------------------------------------------------------------
    // restituisce l'oggetto che fa la richiesta http
    // --------------------------------------------------------------------
    function getXMLHttp() 
    {
    	var xmlhttp = null;
    	
    	if(window.XMLHttpRequest) 
    	{
    		xmlhttp = new XMLHttpRequest(); // Gecko (Firefox, Moz), KHTML (Konqueror, Safari), Opera, Internet Explorer 7
    	} 
    	else if(window.ActiveXObject) 
    	{
    		try
    		{
    			xmlhttp = new ActiveXObject("MSXML2.XMLHTTP"); // Internet Explorer 6 
    		} 
    		catch(e) 
    		{
    			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer 4,5 
    		}
    		} 
    	else 
    	{
    		xmlhttp = null;
    	}
    	return xmlhttp;
    }
    
    
    // -->
    </script>
    </head>
    <body>
    	<input id="Button1" type="button" value="button" language="javascript" onclick="return Button1_onclick()" />
    	<div id="div1"></div>
    </body>
    </html>
    Ebbene, con Firefox 1.5 italiano, premendo il pulsante non succede assolutamente niente, e non mi compare neanche la finestra di errore. Se faccio la richiesta asincrono, invece, funziona.
    In IE funziona(ma non fa testo, naturalmente)

    Pietro

  4. #4
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    Dunque il dubbio che mi viene, e' che essendo sincrona non ti serve avere una funzione che testi l'onreadystatechange
    facendo una prova del genere funziona

    codice:
    function Button1_onclick() 
    {
    	//creazione oggetto per richiesta web
    	var objHTTP = getXMLHttp();
    	//apertura connessione HTTP
    	//1° parametro, GET, POST, HEAD
    	//2° parametro, risorsa da richiedere
    	//3° parametro, asincrona=true, sincrona=false
    	objHTTP.open('GET', 'a_action.asp?r=' + Math.random(), false);
    	//impostazione della funzione di callback
    	objHTTP.send(null);
    	
    	if (objHTTP.status == 200) 
    	{ 
    	var t = objHTTP.responseText;
    	document.getElementById("div1").innerHTML = t; alert(t);
    	}
    	
    
    }
    funziona,
    ed ho provato in a_action a mettere un "ritardante"
    codice:
    <% for i=0 to 500000
    	a = Request("r") & vbcrlf
    next %>
    <%="ciao vediamo se funzioni
     i vale " & i %>
    e funge uguale bene.
    Nel senso, la richiesta è sincrona quindi il js aspetta il valore di ritorno dal comando, ossia dopo il send tutti i giochi dovrebbero essere stati fatti.
    Noi si utilizza la modalita' asincrona per poter permettere all'utente di farsi i fatti suoi mentre il js lavora. se ho interpretato male, correggetemi

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ti ringrazio della risposta

    Pietro

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.