Visualizzazione risultati 1 fino 7 di 7

Discussione: [JS]Ahah "catturare" la risposta del server

  1. #1
    Guest

    Predefinito [JS]Ahah "catturare" la risposta del server

    forse dal titolo non si capisce bene, ma quello che devo fare non è molto complicato:

    Codice:
    function submit(FILE, METHOD)
    {
    	if( document.getElementById('spy') )
    	{
    		var key = new Array('coo', 'quote', 'nofleet', 'nodif', 'nocos', 'noric', 'resize', 'save');
    		var key2 = new Array('coo2', 'quote2', 'nofleet2', 'nodif2', 'nocos2', 'noric2', 'resize2', 'save2');
    		var len = key.length;
    	
    		for( var x = 0; x < len; x++ )
    		{
    			var val = document.getElementById(key[x]).checked;
    			document.getElementById(key2[x]).value = val;
    		}
    	}
    	
    	var target = '';
    	var rnd = Math.random();
    	var num = document.forms[0].elements.length;
    	var url = "";
    	for (var i = 0; i < num; i++)
    	{
    		var chiave = document.forms[0].elements[i].name;
    		var valore = document.forms[0].elements[i].value;
    		var tipo = document.forms[0].elements[i].type;
    
    		if ( (tipo == "submit") || (tipo == "radio") || (tipo == "checkbox") )
    		{
    		}
    		else
    		{
    			url += chiave + "=" + valore + "&";
    		}
    	}
    	var parameters = url;
    	
    	url = FILE + "?" + url + "&rnd" + rnd;
    	
    	if (METHOD == undefined)
    	{
    		METHOD = "GET";
    	}
    	if (METHOD == "GET")
    	{
    		return ahah(url, target, '', METHOD);
    	}
    	else
    	{
    		return ahah(FILE, target, '', METHOD, parameters);
    	}
    }
    
    function ahah(url, target, delay, method, parameters)
    {
    	if (method == undefined)
    	{ 
    		if (window.XMLHttpRequest)
    		{
    			req = new XMLHttpRequest();
    		  }
    		else if (window.ActiveXObject)
    		{
    			req = new ActiveXObject("Microsoft.XMLHTTP");
    		  }
    		  if (req)
    		{
    			req.onreadystatechange = function()
    			{
    				//ahahDone(url, target, delay, method, parameters);
    				  if (req.readyState == 4)
    				{ 
    					if (req.status == 200)
    					{ 
    						  response = req.responseText;
    					}
    				  }
    
    			};
    			req.open("GET", url, true);
    			req.send("");
    		 }  
    	 }
    	if ( (method == "GET") || (method == "get") )
    	  {
    		  if (window.XMLHttpRequest)
    		{
    			req = new XMLHttpRequest();
    		  }
    		else if (window.ActiveXObject)
    		{
    			req = new ActiveXObject("Microsoft.XMLHTTP");
    		  }
    		  if (req)
    		{
    			req.onreadystatechange = function()
    			{
    				//ahahDone(url, target, delay, method, parameters);
    				  if (req.readyState == 4)
    				{ 
    					if (req.status == 200)
    					{ 
    						  response = req.responseText;
    					}
    				  }
    
    			};
    			req.open(method, url, true);
    			req.send("");
    		  }
    	  }
    
    	  if ( (method == "POST") || (method == "post") )
    	  {
    		  if (window.XMLHttpRequest)
    		{
    			req = new XMLHttpRequest();
    		  } else if (window.ActiveXObject)
    		{
    			req = new ActiveXObject("Microsoft.XMLHTTP");
    		  }
    		  if (req)
    		{
    			req.onreadystatechange = function()
    			{
    				ahahDone(url, target, delay, method, parameters);
    				  /*if (req.readyState == 4)
    				{ 
    					if (req.status == 200)
    					{ 
    						  response = req.responseText;
    					}
    				  }*/
    
    			};
    			req.open(method, url, true);
    			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    			req.send(parameters);
    		  }
    	  }
    	//return response;
    }  
    
    function ahahDone(url, target, delay, method, parameters)
    {
    	  if (req.readyState == 4)
    	 { 
    		if (req.status == 200)
    		{ 
    			  //document.getElementById(target).innerHTML = ''+ req.responseText;
    			response = req.responseText;
    		}
    	  }
    }
    questo codice l'ho trovato sul forum, era stato postato da debug.

    l'ho modificato per adattarlo alle mie esigenze, ma c'è un problema:
    mi serve di prendere il testo, per farci delle modifiche, non di inserirlo subito nella pagina con innerHTML.
    ho questa funzione sulla pagina:

    Codice:
    var response;
    function send(file, method, target)
    {
    	submit(file, method);
    	document.getElementById(target).innerHTML = response;
    }
    al posto del testo mi esce sempre undefined...
    come posso risolvere il problema?

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    All'inizio del codice prova a mettere:
    Codice:
    var response;
    Oppure, se non funziona, prova con:
    Codice:
    var response="";
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    mettendo var response = "" funziona a metà, cioè una volta carica, e una volta no...

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Purtroppo non me ne intendo molto di tecnologie AJAX e AHAH (e mi sa che dovrò mettermi d'impegno se voglio realizzare un progettino sul mio sito...), però qualcosa di strano l'ho trovato:
    Codice:
    	var url = "";
    	for (var i = 0; i < num; i++)
    	{
    		var chiave = document.forms[0].elements[i].name;
    		var valore = document.forms[0].elements[i].value;
    		var tipo = document.forms[0].elements[i].type;
    
    		if ( (tipo == "submit") || (tipo == "radio") || (tipo == "checkbox") )
    		{
    		}
    		else
    		{
    			url += chiave + "=" + valore + "&";
    		}
    	}
    	var parameters = url;
    	
    	url = FILE + "?" + url + "&rnd" + rnd;
    A parte il fatto che puoi ottimizzare l'"if vuoto" semplicemente sostituendo == con != e || con && (hai così la condizione contraria)...

    Quello che ti chiedo è: sei sicuro che così l'URL viene costruito correttamente? Perché a vedere come lo costruisci sembra che ne uscirà qualcosa del tipo:
    Codice:
    http://mysite.myhost.org/file.htm?key1=value1&key2=value2&&rnd0.123456789012345
    Non so se risolverà il tuo problema... stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    Guest

    Predefinito

    ho fatto anche questa modifica, ma il problema rimane lo stesso, cioè mostra il tewsto una volta si, e un'altra no.
    comunque se non dovesse funzionare facewndo delle altre prove, l'unica soluzione che rimane è fare le "operazioni" che mi servono direttamente dentro la funzione ahahdone.

    grazie lo stesso.

  6. #6
    Guest

    Predefinito

    Scusate l'intromissione.. cosa serve di preciso questo codice??

  7. #7
    Guest

    Predefinito

    con questo codice richiami una pagina, e inserisci l'output in una determinata parte della pagina, senza ricaricare tutto.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •