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

    AJAX: ActiveXObject esegue una volta sola

    Ciao a tutti, ho un dilemma che data la mia niubbaggine in ajax potrebbe essere una vera cavolata.... passo a descrivere il tutto:
    Al variare di una select cambio un'immagine recuperando un po' di informazioni da db...
    Su FF e derivati tutto ok, su Ie funziona alla prima chiamata alla funzione e poi nn fa + nulla....
    A questo punto le mie considerazioni sono 2 o l'onchange viene calcolato in maniera diversa su ie o l'oggetto ActiveXObject fa qualcosa di strano....bhO!?
    Qualcuno ha avuto esperienza sa in che modo risolvere?
    la funzione è semplicissima... invia 2 varialibili per la query e ne riceve una in risposta con l'indirizzo dell'immagine...

    questo la mia funzione:

    codice:
    // JavaScript Document
    var xmlHttp;
    try
      {
      // Firefox, Opera 8.0+, Safari
      xmlHttp=new XMLHttpRequest();
      }
    catch (e)
      {
      // Internet Explorer
      try
        {
        xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
      catch (e)
        {
        try
          {
          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        catch (e)
          {
          alert("Your browser does not support AJAX!");
          }
        }
      } 
    
    function stampamelo(x){ 
    	xmlHttp.onreadystatechange=function()
    	{
    	if(xmlHttp.readyState==4)
    	  {   
    		document.getElementById("img_"+x.name).src=xmlHttp.responseText;
    	  }
    	}
    	var nome = x.value;
    	var tabella= x.name;
    	xmlHttp.open("GET","php/query_img.php?nome="+nome+"&tabella="+x.name,true);
    	xmlHttp.send(null);
    }
    ...
    giO!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Con ie funziona solo la prima chiamata, perché alla seconda ripesca i dati dalla cache per risolvere appendi un codice random una cosa del genere Math.floor(Math.random() * (9999))
    la tua chiamata get diventerà:
    xmlHttp.open("GET","php/query_img.php?nome="+nome+"&tabella="+x.name+"&noC ache="+ Math.floor(Math.random() * (9999)),true);

    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3

    RISOLTO

    Smanettando ho trovato soluzione anche se nn me la spiego totalmente...

    codice:
    // JavaScript Document
    var xmlHttp;
    try
      {
      // Firefox, Opera 8.0+, Safari
      xmlHttp=new XMLHttpRequest();
      }
    catch (e)
      {
      // Internet Explorer
      try
        {
        xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
      catch (e)
        {
        try
          {
          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        catch (e)
          {
          alert("Your browser does not support AJAX!");
          }
        }
      } 
    
    function stampamelo(x){ 
    
           var nome = x.value;
    	var tabella= x.name;
    	xmlHttp.open("GET","php/query_img.php?nome="+nome+"&tabella="+x.name,true);
    
    
    	xmlHttp.onreadystatechange=function()
    	{
    	if(xmlHttp.readyState==4)
    	  {   
    		document.getElementById("img_"+x.name).src=xmlHttp.responseText;
    	  }
    	}
    	
    	xmlHttp.send(null);
    }

    Ho spostato la chiamata alla pagina php prima dell' onreadystatechange e anche su explorer gira....

    ora nn mi spiego proprio come mai prima su FF andava e su ie no e come sia possibile che ora fila liscio su tutti e due....
    ma cmq l'importante è che funzioni....
    ...
    giO!

  4. #4
    Originariamente inviato da cavicchiandrea
    Con ie funziona solo la prima chiamata, perché alla seconda ripesca i dati dalla cache per risolvere appendi un codice random una cosa del genere Math.floor(Math.random() * (9999))
    la tua chiamata get diventerà:
    xmlHttp.open("GET","php/query_img.php?nome="+nome+"&tabella="+x.name+"&noC ache="+ Math.floor(Math.random() * (9999)),true);

    Il ragionamento nel caso fosse stata colpa della cache filava, ma penso sarebbe stato più stiloso come programmazione buttarci invece che un random un timestamp, che di sicuro non è mai uguale
    ...
    giO!

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.