Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2000
    Messaggi
    137

    sincrono asincrono ?? la prima chiamata non funzia

    eccomi di nuovo
    dopo molto girovagare e una discussione chiusa ieri ho partorito questo codice che,
    spiego per i molti che non avevano letto quello che avevamo detto nel mio delirio dell'altro trhead risolto grazie alla bravura del grande br1

    dunque io ho una icona che cliccata chiama le funzione add_item()
    che non deve fare altro ,per il momento, interrogare un db e riportarmi il prezzo di un codice che io gli invio (che poi altro non è che il nome della pagina)
    e con ajax ce l'ho fatta funziona ma edico MA
    solo dopo il primo click infatti al secondo click mi da il prezzo giusto al primo mi da vuoto
    (lo verifico con l'alert)
    la cosa si risolve se sostituisco con
    window.setTimeout("alert(prezzo)", 500);
    l'alert semplice..
    suppongo sia un problema di tempi di attesa..come posso risolvere il problema...
    basta il settimeout ??? e se poi i tempi si allungano..??
    (sto testando tutto sul webserver del mio pc)

    questo è il codice....

    Codice PHP:
     prezzo"";

    function 
    Response() {
      
    //alert('sono entrato nella funzione Response')
      
    if (richiesta.readyState == 4) {
        if(
    richiesta.status == 200) {
              
    prezzorichiesta.responseText;
        } else {
              var 
    results "C'è stato un errore. Contattare il supporto";
          
    prezzoresults;
        }
      }
    }

    function 
    Aggiungi(id

    var 
    url="../common/scripts/03_prodotti/connetti.asp?id="+id
    url=url+"&sid="+Math.random();
     if (
    window.XMLHttpRequest) { 
        
    richiesta = new XMLHttpRequest(); 
      
        
    richiesta.open("POST"urltrue); 
      
        
    richiesta.onreadystatechange Response
        
    richiesta.send(null); 
        
    // branch for IE/Windows ActiveX version 
       
    } else if (window.ActiveXObject) { 
        
    richiesta = new ActiveXObject("Microsoft.XMLHTTP"); 
       
        if (
    richiesta) { 
          
           
    richiesta.open("POST"urltrue); 
            
    richiesta.onreadystatechange Response
           
    richiesta.send(); 
         } 
       } 



    function 
    add_item()
    {
     var 
    indirizzo document.URL;
     var 
    nomepagina indirizzo.split('/');
     var 
    art nomepagina[nomepagina.length-1].split('.');
     var 
    articolo art[0];

       
    Aggiungi(articolo);
     
    //window.setTimeout("alert(prezzo)",  1000);
    alert(prezzo);
     } 

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2000
    Messaggi
    137
    nessuno ha suggerimenti..da ieri mi sono letta almeno 7000 messaggi del forum (confesso anche di altri siti ma non sono riuscita a trovare soluzione...

  3. #3
    Ciao,
    siccome esegui una chiamata asincrona,
    l'esecuzione del programma va avanti senza attendere l'esito della richiesta.

    Per catturare l'alert,
    lo devi spostare nella funzione di callback(), ovvero:

    if(richiesta.status == 200) {
    //Spazio di CallBack()
    prezzo= richiesta.responseText;
    alert(prezzo);
    }

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2000
    Messaggi
    137
    MAGICO !!!!
    è vero ora funzia....


    GRAZIE GRAZIE...
    ora quindi dovrò inserire lì eventuale codice che utilizza la variabile prezzo??

    GIUSTO?

    :master:

  5. #5
    in genere in quel posto si utilizza una funzione, detta di callBack(), che utilizza i dati ricevuti in risposta alla chiamata.
    Li e solo lì se esegui una chiamata asincrona,
    altrimenti in caso di chiamata sincrona (siccome l'esecuzione si blocca in attesa della risposta)
    in qualunque parte dello script.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

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.