Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    47

    ajax: verifica disponibilità nickname

    ciao a tutti,
    sono alle prime armi con ajax e sto facendo in modo di verificare se un nickname è già registrato. ho trovato delle funzioni che dovrebbero essere giuste ma non so che tipo di valore devo ritornare dalla pagina php.
    il pulsante è:
    Verifica disponibilità

    e le funzioni sono:

    <script>
    function checkFreeNickaname()
    {
    var nickname = document.moduloregistrazione.frmUsername.value;
    if(nickname.length < 2)
    {
    alert("ATTENZIONE!\r\nDigitare il nickname desiderato prima di procedere con la verifica della disponibilità");
    return;
    }
    var url = "http://www.xxxxxxxxxxxxxxxxxxxxxxx.com/controlla_nickname.php?nickname=" + escape(nickname);
    AJAX.invoke(url, checkFreeNickanameCallBack);
    }

    function checkFreeNickanameCallBack(r)
    {
    if(r.toLowerCase() == "true")
    alert("COMPLIMENTI!\r\nIl nickname da te scelto è valido.\r\nPuoi proseguire con la registrazione!");
    else
    alert("ATTENZIONE!\r\nIl nickname da te scelto è già utilizzato (oppure non è valido).\r\nScegline un altro, quindi verifica nuovamente la disponibilità prima di proseguire con la registrazione!");
    }


    // AJAX Lib
    // private: xmlhttp factory
    function AJAX(){}
    AJAX.invoke = function(url, callback)
    {

    var xmlHttp = AJAX._getXmlHttp();
    if(xmlHttp)
    {

    xmlHttp.open("GET", url, true);
    xmlHttp.onreadystatechange = function()
    {
    if(xmlHttp.readyState == 4){

    callback(xmlHttp.responseText);
    }
    }
    xmlHttp.send(null);
    }

    }
    AJAX._getXmlHttp = function()
    {
    try
    {
    if(window.XMLHttpRequest)
    {
    var req = new XMLHttpRequest();
    // some versions of Moz do not support the readyState property and the onreadystate event so we patch it!
    if(req.readyState == null)
    {
    req.readyState = 1;
    req.addEventListener("load",
    function()
    {
    req.readyState = 4;
    if(typeof req.onreadystatechange == "function")
    req.onreadystatechange();
    },
    false);
    }
    return req;
    }
    if(window.ActiveXObject)
    return new ActiveXObject(AJAX._getXmlHttpPrefix() + ".XmlHttp");
    }
    catch (ex) {}
    alert("Il tuo browser non supporta questa funzionalità");
    }
    AJAX._getXmlHttpPrefix = function()
    {
    if(AJAX._getXmlHttpPrefix.prefix)
    return AJAX._getXmlHttpPrefix.prefix;
    var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
    var o;
    for(var i = 0; i < prefixes.length; i++)
    {
    try
    {
    o = new ActiveXObject(prefixes[i] + ".XmlHttp");
    return AJAX._getXmlHttpPrefix.prefix = prefixes[i];
    }
    catch (ex) {};
    }
    throw new Error("Could not find an installed XML parser");
    }
    </script>



    quello che volevo sapere è come devessere fatto e che valore devo ritornare dal file controlla_nickname.php?

  2. #2
    Questa funzione ajax non è delle migliori, è pressocchè illegibile. Cmq la convalida non va MAI e dico MAI fatta lato client.

    quindi questa funzione
    function checkFreeNickanameCallBack(r)
    {
    if(r.toLowerCase() == "true")
    alert("COMPLIMENTI!\r\nIl nickname da te scelto è valido.\r\nPuoi proseguire con la registrazione!");
    else
    alert("ATTENZIONE!\r\nIl nickname da te scelto è già utilizzato (oppure non è valido).\r\nScegline un altro, quindi verifica nuovamente la disponibilità prima di proseguire con la registrazione!");
    }

    la puoi cacciare

    Per fare la convalida lato server puoi cercare nel forum di php, onestamente non sono molto esperto in materia.

    PS: al posto di usare escape dovresti usare encodeURIcomponent, infatti funziona con molti più caratteri.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    47
    grazie per i consigli!
    però il problema è fondamentale è quello di partenza...altrimenti potrebbe essere un modo piu semplice di implementazione? magari solo javascript?

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    47
    scusa...in pratica da quello che ho capito la pagina php deve ritornare solo true, però bo io non riesco a farlo funzionare..

  5. #5
    La pagina php deve ovviamente controllare se il nickname esiste nel database. Se non esiste ti manda alla pagina di login, altrimenti manda un messaggio, che il nick è già stato scelto.

    Quindi ripeto, checkFreeNickanameCallBack è una funzione che può essere eliminata.

    In ajax.invoke puoi benissimo mettere un function() { } come secondo argomento, in modo da non generare errore.

    PS sarebbe meglio postare anche il codice php, ricordandoti di cancellare la password

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 © 2024 vBulletin Solutions, Inc. All rights reserved.