Visualizzazione risultati 1 fino 5 di 5

Discussione: Ajax - contenuto non aggiornato

  1. #1
    Guest

    Unhappy Ajax - contenuto non aggiornato

    attraverso un comando che invia dei dati in ajax dovrei aggiornare il contenuto di un div. fino a qua nessun problema , i dati vengono inviati, php fa il suo dovere, ma il contenuto del div rimane sempre lo stesso.
    Come mai?
    Qua riporto il codice

    Codice HTML:
    function hello ()
    {
       var req = new XMLHttpRequest ();
       req.onreadystatechange = function () {
          if (req.readyState == 4 && req.status == 200)
             document.getElementById('hello').innerHTML = req.responseText;
       };
    
    
       req.open ('GET', 'leggi1.php?name=<?php echo $idutente; ?>', true);
       req.send (null);
       window.setTimeout('hello()', 200)
    }
    
    

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    E' probabile che il tuo browser salvi l'output di leggi1.php in cache, invece di richiamare lo script ogni volta.

    Puoi risolvere il problema rendendo la richiesta diversa ogni volta, aggiungendo un parametro che cambi sempre, ad esempio un timestamp

    Codice PHP:
    ...
    var ts = Math.round( new Date().getTime() / 1000 );
    req.open ('GET', 'leggi1.php?name=<?php echo $idutente; ?>&timestamp=' + ts, true);
    ...

  3. #3
    Guest

    Predefinito

    grazie mille , funziona alla perfezione . :)

    ps: e se volessi numero sempre diverso? lo fa in automatico ? o devo aspetta un minuto ogni volta?
    Ultima modifica di provaxyw : 06-02-2010 alle ore 15.02.44

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    getTime() ti da il numero di millisecondi. Sopra ho diviso per mille in modo da ottenere i secondi, ma puoi cambiare come preferisci.

  5. #5
    Guest

    Predefinito

    ore un'altro problema:

    praticamente genero con php gei link e li invio con ajax , ma soltanto l'ultimo link funziona .

    ti riporto l'intero codice:

    Codice HTML:
       var http_request = false;
    
        function makeRequest(url,getvar,funzione) {
    
            http_request = false;
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                http_request = new XMLHttpRequest();
                if (http_request.overrideMimeType) {
                    //http_request.overrideMimeType('text/xml');
                    // See note below about this line
                }
            } else if (window.ActiveXObject) { // IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
    
            if (!http_request) {
                alert('Giving up :( Cannot create an XMLHTTP instance');
                return false;
            }
            http_request.onreadystatechange = funzione;
            http_request.open('POST', url, true);
    	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            http_request.send(getvar);
    
        }
    
        function alertContents() {
    
            if (http_request.readyState == 4) {
                if (http_request.status == 200) {
                    //alert(http_request.responseText);
    		document.getElementById("result").innerHTML = http_request.responseText;
                } else {
                    alert('There was a problem with the request.');
    		
                }
            }else{
    		document.getElementById("result").innerHTML ="loading";
    	}
    
        }
    
    // Restituisce una istanza dell'oggetto XMLHttp (cross-browser)
    function getXMLHttp()
    {
      var xmlhttp=false;
      // Utilizziamo la compilazione condizionale di JScript
      // per far fronte alle vecchie versioni di
      // Internet Explorer che non supportano i blocchi try/catch.
      /*@cc_on @*/
      /*@if (@_jscript_version >= 5)
      // Prova la creazione dell'oggetto ActiveX XMLHTTP
      try
      {
        xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
      }
      catch (e)
      {
        try
        {
          xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
        }
        catch (E)
        {
          xmlhttp = false;
        }
      }
      @end @*/
      // Se il browser non è Internet Explorer viene creato
      // l'oggetto XMLHttpRequest (Netscape, Mozilla)
      if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
      }
      return xmlhttp;
    }
    
    // Si connette all'URL specificato, ne preleva i contenuti
    // e li visualizza come contenuto del tag avente l'ID specificato
    function getURL(url, id)
    {
      var xmlhttp = getXMLHttp();
      if (!xmlhttp)
      {
        alert('XMLHttp non supportato dal browser');
        return false;
      }
    
      showLoading(true);
      xmlhttp.open('GET', url, true);
      xmlhttp.onreadystatechange=function()
      {
        if (xmlhttp.readyState==4)
        {
          showLoading(false);
          if (xmlhttp.status == 200)
          {
            var elem = document.getElementById(id);
            if(elem == null)
              alert('Elemento inesistente: ' + id);
            else
              elem.innerHTML = xmlhttp.responseText;
          }
          else if (xmlhttp.status == 404)
            alert('URL inesistente: ' + url);
          else
            alert('Errore: ' + xmlhttp.status);
        }
      }
      xmlhttp.send(null)
    }
    
    // Visualizza o nasconde il DIV con la scritta LOADING
    function showLoading(b)
    {
      var elem = document.getElementById('loading')
      elem.style.left = document.body.scrollWidth / 2;
      if (b)
        elem.style.visibility = 'visible';
      else
        elem.style.visibility = 'hidden';
    }

    è questo il link che si genera


    Codice PHP:

    <a href="javascript:void(null);" onclick="makeRequest('eliminanodo.php?idvar=55628879114', null, alertContents);hello();AggiornaAJAX();">Elimina Nodo</a>

Regole di scrittura

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