Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    98

    Status 0 richiesta AJAX

    Salve a tutti.
    Sto realizzando un form di registrazione nel quale tramite AJAX voglio verificare che l'email inserita dall'utente non risulti già registrata.

    Per farlo ho utilizzato i seguenti sorgenti:

    All'interno del form:
    codice:
    <input type="email" name="email" pattern="[a-z0-9._-]+@[a-z0-9.-_]+\.[a-z]{2,3}$" title="Indirizzo email non valido." maxlength="255" onblur="emailGiaInUso(this.value);" required />
    Script ajax
    codice:
    function emailGiaInUso(email)
    			{
    				function assegnaXMLHttpRequest()
    				{
    					var XHR = null, browserUtente = navigator.userAgent.toUpperCase();
    
    
    				    if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
    						XHR = new XMLHttpRequest();
    					else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0)
    				    {
    						if(browserUtente.indexOf("MSIE 5") < 0)
    							XHR = new ActiveXObject("Msxml2.XMLHTTP");
    						else
    							XHR = new ActiveXObject("Microsoft.XMLHTTP");
    					}
    					return XHR;
    				}
    
    
    				myRequest = assegnaXMLHttpRequest();
    				if( myRequest )
    				{
    					myRequest.open("POST","email_esistente.php", true);
    					myRequest.setRequestHeader("content-type", "application/x-www-form-urlencoded");
    					//myRequest.setRequestHeader("connection", "close");
    
    
    					alert("Readystate prima di send: " +myRequest.readyState);
    					alert("Status prima di send: " +myRequest.status);
    					myRequest.send("email="+email); //fa passare $_POST['regione']=valore al file carica_regione.php
    					alert("Readystate post send: " +myRequest.readyState);
    					alert("Status post send: " +myRequest.status);
    					
                                            if(myRequest.readyState==4 && myRequest.status==200)
    					{
    						/* CODICE ANCORA DA SCRIVERE */
    					}
    				}
    			}
    Script email_esistente.php che interroga il db
    codice:
    <?php
        if( isset($_POST['email']) )
        {
            include_once("db.php");
    
    
            $pst = $dbCon->prepare("SELECT * FROM utenti WHERE email = ?");
            // variabili per la sostituzione dei placeholder
            $pst->bind_param('s', $email);
            // variabili per l’esecuzione
            $email = $_POST['email'];
            // esecuzione dell’istruzione
            $pst->execute();
            // chiusura dello statement
            $pst->close();
        }
    ?>
    Il problema nasce dal fatto che la richiesta, anche dopo il send, resti in readystate 1 (stato di open) e in status 0, stato che evidentemente segnala un qualche errore a cui non riesco a risalire.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,684
    Ciao, due cose:

    1 - AJAX per definizione è un sistema asincrono; nel tuo codice mi pare ci manchi il gestore di evento onreadystatechange che è appunto necessario per verificare le risposte restituite dal server.
    Vedi qualche guida tipo:
    https://www.w3schools.com/xml/ajax_intro.asp
    http://www.html.it/pag/50473/ajax-e-javascript/

    2- Quello script mi sembra alquanto datato dal momento che è definito un supporto anche per versioni preistoriche di IE.

    Un consiglio: a meno che tu non sia un purista JavaScript, ti suggerirei vivamente l'uso di jQuery il quale, oltre a semplificare lo sviluppo di tutto l'eventuale resto dello script, ti offre semplici metodi per costruire e gestire chiamate AJAX come questo caso.
    Vedi documentazione o qualche guida tipo:
    http://api.jquery.com/jquery.ajax/
    http://www.html.it/pag/18403/jquery-ajax/

    Chiaramente è giusto un consiglio, poi vedi tu.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.