Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema semplice ajax, interrogazione mysql, help!

    Salve,
    ho iniziato da pochissimo ad usare ajax quindi mi trovo davanti a dei problemi semplici.

    Vorrei fare validazione dei dati di una form "al volo".
    La tecnica che ho pensato è questa:

    - L'utente mette username
    - Lo script invia la richiesta alla pagina check.php che verifica nel database se lo username è disponibile, se si ritorna la stringa "ok" altrimenti "ko"
    - Lato client il gestore dell'oggetto xmkhttprequest che chiamiano verifica() controlla, se è ritornato "ok" setta la variabile controllo=true altrimenti controllo=false

    funzioneOnBlur()
    {
    inviaRichiestaAServer();
    if(controllo=true){
    alert("si");
    }
    else
    {
    alert("no");
    }
    }

    inviaRichiestaAServer(){
    ...
    req.onreadystatechange=verifica;
    ...
    }


    verifica(){
    if(req.responseText=="ok"){
    controllo=true
    }
    else
    controllo=false
    }

    Il problema è che la prima volta che viene fatto il controllo non funziona ovvero ho alert("no");, la seconda volta in poi si... è un problema di sincronismo? forse la chiamata di verifica è ritardata e quindi al successivo if(controllo=true) la prima volta non lo prende?

    Se non sono stato chiaro mi spiego meglio... grazie!!

  2. #2
    Secondo me dipende dalle routine ajax che hai usato
    io lo farei così:

    <script src="prototype.js" type="text/javascript"></script>

    <div id="Loading1"></div><div id="Risultato1"></div>

    <input type="text" name="username" id="username" value="" onblur="javascript:check()">
    ecc.ecc.

    <script type="text/javascript">
    function check()
    {
    new Ajax.Request('check.php', {method: 'post',
    parameters: {
    username: $("username").value,
    password: $("password").value
    },
    onComplete: function(transport){
    var t = transport.responseText || "nessuna risposta";
    $("Risultato1").innerHTML = t;
    $("Loading1").innerHTML = "";
    },
    onLoading: function(){$("Loading1").innerHTML = "[img]indicator.gif[/img]"},
    onFailure: function(){$("Risultato1").innerHTML = "Prog.non trovato"}
    });
    }
    </script>


    nella variabile "t" ci trovi l'echo del check.php

  3. #3
    oh cavolo... grazie mille per la risposta, ma non capisco un acca della sintassi che hai scritto, dato che ho appena iniziato ad usare js.

    Mi sa che devo prima rivedermi un po di js. Ma hai usato un qualche framework ho lo hai scritto diaciamo a mano?

  4. #4
    no è scritto a mano
    ti posso dire solo che
    $("username").value
    è come scrivere:
    document.getElementById("username").value

    sarebbe l'abbreviazione che le routines prototype ti danno
    molto comodo...

    saluti

  5. #5
    Ho visto un prototype ed è interessante... certo usando quello funziona tutto, è un ottimo framework, grazie

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.