ajax che qualche volta non funziona

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ho fatto un form con due select (ecc ma il resto non interessa)
nella prima selezione la provincia
nella seconda, selezionata la provincia, appaiono tutti i comuni della stessa (utilizzo ajax come consiglatomi da eliox)
tutto funziona, ma c'è un però

ho visionato quello che ho realizzato su vari computers e nel 95% dei casi tutto ok, in alcuni invece selzionando la provincia i comuni è come se non esistessero (e quindi sballa tutta la ricerca successiva), ho verificato se js era attivato e risultava "si"

il tutto, sembra, indipendente da IE o da FF, da cosa può dipendere?
aggiornamento del bw? agiornamento di qualche plug?
 
:dipser:ahime fine delle ferie.

ho testato con IE 7 e FF 1.04.

il file ajax

HTML:
function InviaDati(data)
{
  // istanziamo l'oggetto XMLHttpRequest
  if (window.XMLHttpRequest) 
  {
    req = new XMLHttpRequest();
    req.onreadystatechange = function() { PocessaDati(req); };
    req.open('POST', url, true);
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    req.send(data);
  }
  // controlliamo la versione di ActiveX
  else if (window.ActiveXObject) 
  {
    req = new ActiveXObject('Microsoft.XMLHTTP')
    if (req)
    {
      req.onreadystatechange = PocessaDati;
      req.open('POST', url, true);
      req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      req.send(data);
    }
  }
}

function PocessaDati(req)
{
  // monitoriamo lo stato dell'invio
  if (req.readyState == 4)
  {
    // restituiamo lo stato della richiesta
    if (req.status == 200) 
    {
      eval(what);
    }else{
      alert('Problema nella gestione dei dati: ' +
      req.responseText);
    }
  }
}

e questa la pag. php con le selezioni (le province ed i comuni da tabelle db)

PHP:
<script type="text/javascript">
var url = "comuni.php";
var what = "SetProvince(req.responseText)";

function GetProvince(regione)
{
  InviaDati("regione="+regione);
}


function SetProvince(Province)
{
  var provinciaBox = document.getElementById("provincia");
  provinciaBox.options.length = 0;
  if(Province != "")
  {
    var arrProvince = Province.split(",");
    for(i = 0; i < arrProvince.length; i++)
    {
      if(arrProvince[i] != "")
      {
        provinciaBox.options[provinciaBox.options.length] = 
        new Option(arrProvince[i], arrProvince[i]);
      }
    }
  }
}
</script>
<script src="ajax.js" type="text/javascript"></script>

<?php
include_once "connessione.php";
?>


<form name="form1" method="post" action="demo-01.php">
<div class="selzioni">
  <p>Seleziona la Provincia<span class="Stile1">*</span>:<br> 
    <select onChange="GetProvince(this.options[this.selectedIndex].text)" id="regione" name="regione">
      <option value="0">-seleziona-</option>
<?php
$cerca_R="select * from regioni order by regione";
$query_R= mysql_query($cerca_R) or die (mysql_error());
while ($riga_R= mysql_fetch_array($query_R)){ //ciclo regioni
	$IDR=stripslashes($riga_R[id_R]);
	$REG=stripslashes($riga_R[regione]);
	echo "<optgroup label=\"".$REG."\">";
	$cerca_P="select * from province where id_R=\"".$IDR."\" order by provincia";
	$query_P= mysql_query($cerca_P) or die (mysql_error());
	while ($riga_P= mysql_fetch_array($query_P)){ //ciclo province
		$IDP=stripslashes($riga_P[id_P]);
		$PRO=stripslashes($riga_P[provincia]);
		$IDP=$IDP."|".$PRO;
		echo "<option value=\"".$IDP."\">".$PRO."</option>";//al value = $IDP
	}//fine ciclo province
	echo "</optgroup>";
}//fine ciclo regioni
/* attenzione: nonmi modificati da js regione=provincia -- provincia=comune --
le province sono raggruppate sotto il nome della regione */
?>  

    </select>
    <br>
    Comune:<br> 
    <select id="provincia" name="provincia">
    </select>
    <br><br>


con mio IE e FF funziona, ho provato sul computer di un cliente e non funzia:confused:
 
sfortunatamente non conosco di preciso la versione IE del cliente (distributore carburante), anche perchè il computer+soft non è suo ma fornito direttamente dalla casa madre della marca e con questa collegato in rete nazionale.
mi sembra comunque che sia una versione molto datata, lo consiglierò (se può) di aggiornarla.
mal che vada gli dirò di guardarsi il sito dal computer di casa.
grazie e ciao
 
Ok ma comunque è possibile che tantissimi browser facciano poi i capricci.

Se si tratta di un pannello di controllo ok, si potrebbe dire "chi se ne frega", ma comunque è bene usare funzioni cross-browser, adattabili quindi anche per il futuro in front-office.

Se vuoi, sono a tua disposizione per aiutarti a risolvere.

Fammi sapere.
 
anche qui sfortunatamente non posso dire

si potrebbe dire "chi se ne frega",

in quanto si tratta di fare una ricerca prima (o solo) sulla provincia e poi eventualmente sul comune. vengono estratti i nominativi appartenti.
nei casi (qui per fortuna rari) in cui si presenta il difetto la ricerca da "non ci sono distributori" anche se non è vero.
ajax funziona anche su bw datati? (es. IE 5 o prec.). penso che il problema sia questo. anzi ne sono quasi sicuro

comunque per ora lascio così (l'errore rappresenta si e no l'1%)

:beer:
 

Discussioni simili