Newsgroup: it.comp.lang.javascript
Titolo: ajax - problema con firefox

Ciao ragazzi,
ho il seguente codice all'interno di due script
script 1
----------------------------------------------
function prendiElementoDaId(id_elemento)
 {
  var elemento;
  if(document.getElementById)
   elemento = document.getElementById(id_elemento);
  else
   elemento = document.all[id_elemento];
  return elemento;
 };
// funzione per assegnare un oggetto XMLHttpRequest
function assegnaXMLHttpRequest()
 {
  var
  XHR = null,
  browserUtente = navigator.userAgent.toUpperCase();
  if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === 
"object")
   XHR = new XMLHttpRequest();
  else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0)
   {
    if(browserUtente.indexOf("MSIE 5") < 0)
     XHR = new ActiveXObject("Msxml2.XMLHTTP");
    else
     XHR = new ActiveXObject("Microsoft.XMLHTTP");
   }
  return XHR;
 };
--------------------------------------------------------------------------------------------------
script 2
-------------------------------------------------------------------------------------------------
function caricaTesto(nomeFile)
 {
  var
  ajax = assegnaXMLHttpRequest(),
  elemento = prendiElementoDaId("boxeditcalendario"),
  cmbNome = prendiElementoDaId("nome"),
  cmbLuogo = prendiElementoDaId("luogo"),
  cmbData = prendiElementoDaId("data"),
  cmbOra = prendiElementoDaId("ora"),
  nome = "nome=" + cmbNome.value,
  luogo = "luogo=" + cmbLuogo.value,
  data = "data=" + cmbData.value,
  ora = "ora=" + cmbOra.value,
  variabileTot = nome + "&" + luogo + "&" + data + "&" + ora;
  alert(ajax);
  if(ajax)
   {
    ajax.open("post", nomeFile, true);
    ajax.setRequestHeader("content-type", 
"application/x-www-form-urlencoded");
    ajax.setRequestHeader("content-type", "text/html; charset=ISO-8859-1");
    //ajax.setRequestHeader("connection", "close");
    ajax.onreadystatechange = function()
     {
      if(ajax.readyState === readyState.COMPLETATO)
       {
        if(statusText[ajax.status] === "OK")
         elemento.innerHTML = ajax.responseText;
        else
         {
          elemento.innerHTML = "<tr><td colspan=\"4\">Errore durante 
l'esecuzione dello script.</td></tr>";
          elemento.innerHTML += "<tr><td colspan=\"4\">Errore corrente: " + 
statusText[ajax.status] + "</td></tr>";
         }
       }
     }
    ajax.send(variabileTot);
   }
  return null;
 }
-----------------------------------------------------------------------------------------------------------------
ora io richiamo questi due script nella mia pagina nell'ordine in cui ve li 
ho postati.
Ho verificato che nella pagina ci sia un solo elemento con id 
"boxeditcalendario"
al variare di select richiamo gli script ma mentre con explorer (7) funziona 
con firefox 3 no.
cosa può essere?
il richiamo lo faccio così
onchange="return caricaTesto('include/calendario/dati.php')
ciao e grazie in anticipo 

 function prendiElementoDaId(id_elemento)
cut....
allora leggendo il resto del gruppo hgo visto la posssibilità tramite 
firefox di controllare gli errori
mi dice che a getelementbyid è stata passata una stringa vuota
come vedete dai codici però io passo sempre qualcosa alla funzione. come 
risolvo?

 function caricaTesto(nomeFile)
a naso a me sembra un buco di sicurezza enorme passare un nome di file
dinamico da eseguire ... spero tu abbia preso le dovute precauzioni
server-side. Sei consapevole che, una volta aperta la tua pagina, posso
eseguire funzioni javascript direttamente dalla riga dove digiti l'url? Con
questa function presente posso eseguire qualsiasi pagina tu abbia
server-side ...
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 risolvo?
debug ... prova a mettere all'inizio della function una alert del parametro
per capire quale arriva vuoto; subito dopo il getElementById prova a
verificare con alert se ti indica object oppure null.
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 verificare con alert se ti indica object oppure null.
ciao cristiano. grazie di aver risposto e scusa se replico solo ora.
allora ho modificato i codici degli script nel seguente modo
// funzione per prendere un elemento con id univoco
function prendiElementoDaId(id_elemento)
 {
  var elemento;
  if(document.getElementById)
  {
   alert(id_elemento);
   elemento = document.getElementById(id_elemento);
alert(elemento)}
  else
   elemento = document.all[id_elemento];
  return elemento;
 };
// funzione per assegnare un oggetto XMLHttpRequest
function assegnaXMLHttpRequest()
 {
  var
  XHR = null,
  browserUtente = navigator.userAgent.toUpperCase();
  if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === 
"object")
   XHR = new XMLHttpRequest();
  else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0)
   {
    if(browserUtente.indexOf("MSIE 5") < 0)
     XHR = new ActiveXObject("Msxml2.XMLHTTP");
    else
     XHR = new ActiveXObject("Microsoft.XMLHTTP");
   }
  return XHR;
 };
/** OGGETTI / ARRAY */
gli alert che ho inserito mi restituiscono sempre qualcosa. il primo mi 
restituisce il valore che passo alla funzione
quindi nel mio caso luogo, data etc tc...compreso il div
il secondo mi fornisce la tipologia dell'oggetto
htmldivcontainer
e 4 select
....come risolvo questo pasticcio? 

 -- 
ciao, questa non la capisco. dici che è un problema di sicurezza ma in 
javascript io sono negato.
ammesso che io passi il file pagina.php/asp o quello che è
come fanno in javascript a lavorare su quella pagina?

 come fanno in javascript a lavorare su quella pagina?
da dove scrivi l'URL ci sono modi per invocare direttamente js nella pagina
... da qui a fare un po' di prove per beccare ed eseguire qualche tua
pagina server-side il passo è semplice. Non dico che qualcuno lo farà, dico
che IMHO è assolutamente da evitare.
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

 ....come risolvo questo pasticcio?
Continuando con il debug per capire cosa/dove esattamente si crea il
problema.
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

 ha scritto nel messaggio 
news:1oi4gaf6b88n5.n...@40tude.net...

penso di aver risolto il problema eliminando la riga
//ajax.setRequestHeader("content-type", "text/html; charset=ISO-8859-1");
evidentemente non devo indicare che è una pagina html....


ho scaricato e installato firebug
nella console vedo che ottengo risposta dal server solo che i dati non sono 
filtrati secondo le mie richieste. in pratica invio i dati alla pagina ma 
non ottengo il filtro

 ha scritto nel messaggio 
news:6qscftlt8z3y$.iseott2lrv49.dlg@40tude.net...

e quindi come posso risolvere? 

 e quindi come posso risolvere?
chiamando sempre lo stesso file server-side, che poi al massimo si occuperà
di invocare i file corretti (con controlli sulla legittimità della
richiesta, ovviamente)
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.

 ha scritto nel messaggio 
news:1djs5806o8xx4.10i4x5b3hb3xf$.dlg@40tude.net...

quindi in pratica si tratta di controllare che la richiesta sia fatta in 
modo lecito (ad esempio che venga fatta da uno script presente sul mio 
server)?

 server)?
Per esempio ... al posto tuo quantomeno troverei un meccanismo per evitare
quanto detto, poi vedi te.
-- 
"La realtà è un'illusione causata dall'assenza di alcool."
									      A.