Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Primi problemi di un principiante

    Ciao a tutti.
    Mi sto adoperando per cercare di capire qualcosa con ajax.
    L'obiettivo sarebbe quello di utilizzare questa tecnologia per aggiornare un campo del database al click di un bottone e quindi sostituire al bottone una scritta.

    Questo è l'HTML
    Codice PHP:
                                        <form>                                
       <
    button id="***" type="submit" onclik="prova(param1, param2)">
       </
    button>
    </
    form
    Questa il javascript
    Codice PHP:
    function prova(param1param2){
        
    ajax setXMLHttpRequest();
        if (
    ajax==null)
         {
         
    alert ("Browser does not support HTTP Request")
         return
         }
        var 
    url;
        
    url "***.php?";
        
    url += "param1="+param1;
        
    url += "&param2="+param2;
        
    ajax.onreadystatechange=stateChanged;
        
    ajax.open("GET",url,true);
        
    ajax.send(null);
    }

    function 
    stateChanged() 

    if (
    ajax.readyState==|| ajax.readyState=="complete")
     { 
     
    document.getElementById("***").innerHTML=ajax.responseText 
     
    }
    else
     {
        
    document.write="Attendere prego...";

    La setXMLHttpRequest ve la risparmio, tanto ce ne sono 13000 in rete.

    Il problema è, almeno credo, che quando viene data la risposta, questa viene reinviata ad una pagina tipo xyz.php mentre la pagina di partenza era xyz.php?chiave=valore, cioè si perde il GET di partenza e quindi ottengo un errore. Ma ancora peggio è che il database non viene aggiornato (la pagina php normalmente fa il suo lavoro, quindi non è lì il problema), quindi non so nemmeno se vi si accede a questa pagina.
    Quali verifiche posso fare e come eventualmente posso ovviare?

    Grazie.

  2. #2
    Prima di tutto Firefox e firebugs che ti permette di vedere le richieste inviate dal browser.
    Poi, se devi usare il get nella pagina madre, perché non lo stampi come una variabile di JS?

    Codice PHP:
    var chiave = "<?=$_GET['chiave']?>";
    function prova(param1, param2){
        var ajax = setXMLHttpRequest();
        if (ajax==null)
         {
         alert ("Browser does not support HTTP Request")
         return
         }
        var url;
        url = "xyz.php?";
        url += "param1="+param1;
        url += "&param2="+param2;
        url += "&chiave="+chiave;
        ajax.onreadystatechange=stateChanged;
        ajax.open("GET",url,true);
        ajax.send(null);
    }

    function stateChanged()
    {
    if (ajax.readyState==4 || ajax.readyState=="complete")
    {
    document.getElementById("xyz").innerHTML=ajax.responseText
    }
    else
    {
        document.write="Attendere prego...";
    }
    Un'altra cosa, è sempre meglio definire le variabili con i var:

    var chiave

    var ajax

  3. #3
    Forse non mi sono spiegato, oppure non ho capito il tuo consiglio.

    La mia situazione è:

    Sono nella pagina xyz.php?chiave=valore ed ho un bottone contenuto in un div con id=***.

    Al click del bottone vorrei andare a finire in ***.php?param1=param1&param2=param2 attraverso ajax. Qui il codice elaborerebbe i parametri passati col get tramite ajax e "sputerebbe" fuori (se tutto va bene) una stringa:

    echo 'Operazione effettuata';

    che, se ho capito come funziona ajax, dovrebbe essere il responseText, visto che ***.php?param1=param1&param2=param2 non dà nulla di output oltre a questo e non ha header.

    Quindi vorrei che questa stringa sostituisse (tramite innerHTML) il bottone, all'interno del div, ovviamente senza ricarica tutta la pagina.

    Purtroppo ciò non accade...

    Ho provato ad usare firebug ma non sembra interagire per niente il codice js (considera che è la prima volta che lo uso...)

    Grazie mille intanto per l'aiuto.

  4. #4
    Mmm, non hai il link dei sito, così ci do un'occhiata.

  5. #5
    Lo sto facendo in locale

  6. #6
    e non puoi pubblicarlo da qualche parte?

  7. #7
    scusa ma non ne vedo la necessità

  8. #8
    beh, solo che non dovrebbe esserci nulla di strano... non è che usi qualche carattere non corretto nel nome del file PHP o nell'ID del div? dato che gli hai cancellati non so come sono.

  9. #9
    tutti caratteri normali, solo qualche underscore.

    ora che mi sto intrippando con firebugs ho notato che il codice effettua la richiesta direttamente alla pagina xyz.php (la pagina di partenza), non passa per niente attraverso la funzione prova e quindi non va nemmeno in ***.php.

  10. #10
    Dopo alcune correzioni, con firebugs ottengo questo (ho cambiato l'evento, ho messo onmouseover):

    prova is not defined
    onmouseover(mouseover clientX=352, clientY=211)

    io ho importato i codici javascript nell'head con
    <script type="text/javascript" language="javascript" src="js/file.js"></script>

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.