Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    30

    [Ajax] Errore nel ricevimento del testo (Firefox)

    Salve. Sto provando a sviluppare un piccolo scriptino ajax, che dovrebbe mostrare in un tooltip il contenuto del file linkato da un elemento a.
    Purtroppo però non tutto funziona come di dovere con Firefox, Opera e compagnia cantante, nonostante non ci siano errori di sintassi (o almeno Firebug non ne trova)
    Ecco il codice:
    codice:
    function getHTTPObject() {
      var xmlhttp;
      /*@cc_on
      @if (@_jscript_version >= 5)
        try {
          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
          try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (E) {
            xmlhttp = false;
          }
        }
      @else
      xmlhttp = false;
      @end @*/
      if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        try {
          xmlhttp = new XMLHttpRequest();
        } catch (e) {
          xmlhttp = false;
        }
      }
      return xmlhttp;
    }
    var http = getHTTPObject();
    
    function glossary(what) {
      http.open("GET", what, true);
      http.onreadystatechange = function() {
        if (http.readyState == 4) {
          text = http.responseText;
          if (text.lenght == 0)
            text = "Spiacenti, il file selezionato non è valido";
        }
      }
      http.send(null);
      return text;
    }
    function showglossary(url) {
      testo = glossary(url);
      tooltip.innerHTML = testo;
    }
    Ora, il tutto funzionerebbe perfettamente se non fosse che:
    a) al primo "passaggio" (la funzione showglossary è richiamata onmouseover) glossary restituisce 'undefined';
    b) al primo passaggio su un link, dopo averne già "visto" un altro, mi viene mostrato il tooltip del primo.
    Proprio non capisco cosa non funzioni, e il fatto che il tutto su IE funzioni perfettamente mi confonde ancora di più!

  2. #2
    Gli errori principali sono 2:
    il primo è che il metodo send va messo dopo quello open;
    il secondo, più grave, è che non puoi prendere il responseText con un return, infatti esso verrebbe ritornato solo all'onreadystatechange. Deve essere la stessa funzione ajax all'onreadystatechange a cambiare l'innerHTML.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    30
    Ah, al send ci avevo pensato, ma ovviamente, per il secondo errore, non funzionava. Grazie mille per l'aiuto

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.