ajax verificarea nume de utilizator onblur

here is the case guys, I'm trying to check username on onblur event with help of ajax , which is checking username availability in MySQL database.

here is ajax script =>

document.getElementById("r_username").onblur = function(){
        var http = false;
        var error = document.getElementById("error_username");
        var numLetter = /^[a-zA-Z-0-9]+$/;
        if (this.value==""){
            error.innerHTML = "Empty Field !!!";
            error.style.display = "inline";
        } else {
            if (this.value.match(numLetter)){
                if (window.XMLHttpRequest){
                    http = new XMLHttpRequest();
                } else {
                    http = new ActiveXObject("Microsoft.XMLHTTP");
                }
                if (http){
                    http.open("POST","./config/AjaxUsernameEmail.php",true);
                    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                    http.onreadystatechange = function(){
                        if (http.readyState==4 && http.status==200){

                        }
                    };
                    http.send("r_username=" + document.getElementById("r_username").value);
                }
                error.innerHTML = "";
                error.style.display = "none";
            } else {
                error.innerHTML = "Invalid Number !!!";
                error.style.display = "inline";
            }
        }
    };

ajax working successfully and .php file too which script is below =>

class Checking{
private $con,$query,$flag;
public function __construct($con,$query){
    $this->con   = $con;
    $this->query = $query;
}
public function func(){
    if (mysqli_connect_errno()==0){
        if ($result = mysqli_query($this->con,$this->query)){
            if ($data = mysqli_fetch_assoc($result)){
                return $this->flag = true;
            } else {
                return $this->flag = false;
            }
        }
    }
}
}

if (isset($_POST['r_username'])){
    $check = new Checking($connection,"SELECT username FROM users WHERE username='" . $_POST['r_username'] . "'");

} else {
    header("Location: http://" . $mysql->host . "/index.php");
}

totul funcționează foarte bine, dar aici este problema, vreau să conectez cumva aceste fișiere, vreau să spun că vreau să știu în fișierul .js când numele de utilizator se potrivește în baza de date și când nu, pentru că vreau să fac mai multe acțiuni în. JS, dar nu pot seta "pavilion" (variabila care ma va ajuta pentru asta). Vreo idee ? Mulțumiri :)))

În mai multe detalii, fișierul .js se află în fișierul registration.php și cum vedeți fișierele .js tipi se invocă cu fișierul ajax AjaxUsernameEmail.php, așa că vreau să fac cumva să aflu când numele de utilizator se potrivește și când nu, pentru că eu doriți în fișierul registration.php să faceți mai multe acțiuni (notificări) în timpul potrivirii

0

2 răspunsuri

Pentru solicitarea ajax nu trebuie return valoarea print sau echo . Încerca

if ($data = mysqli_fetch_assoc($result)){
   echo $this->flag = true; exit;
} else {
   echo $this->flag = false; exit;
}

Evaluarea răspunsului:

if ( http.readyState == 4 && http.status == 200 ) {
  switch ( http.responseText ) {
    case 1: //user name taken, diplay error message
    break;
    case 0: //user name available, no action required
    break;

  }
}
0
adăugat
aici nu este o problemă principală și, de asemenea, funcționează fără ecou și/sau imprimare. Am testat numai în cadrul fișierului AjaxUsernameEmail.php așa => în scriptul de fișiere menționat Am înlocuit metoda POST la GET și când în URL-ul browserului am introdus .php? R_username = (numele care se potrivește în baza de date mysql) și am invocat echo $ check-> func (); este invocat și mi-a scris 1 dacă este potrivire și nimic dacă nu este. Aici problema mea este că vreau să știu cumva această problemă de potrivire în fișierul .js pentru a face mai multe acțiuni
adăugat autor nanoba, sursa

Codul ar putea fi cam mai asemănător:

$return = 'fail';

class Checking {

    public function __construct($con, $query)
    {
        $this->con = $con;
        $this->query = $query;
        self::func()
    }

    public function func()
    {
        $result = 'ok';
        if (mysqli_connect_errno()==0){
            if ($result = mysqli_query($this->con,$this->query)){
                $result = mysqli_num_rows($result) > 0? 'user_exists' : 'user_doesnt_exist';
            }
        }
        return $result;
    }

}

if( $_POST['r_username'] ){
    $desired = mysqli_real_escape_string($_POST['r_username']);
    $return = new Checking($connection,"SELECT username FROM users WHERE username='$desired'");
}
echo $return;

De asemenea, ar trebui să fiți îngrijorat de faptul că ați scăpat de la intrarea utilizatorilor și doriți să consultați jQuery pentru chestiile dvs. ajax.

Verificarea pe partea clientului ar trebui să meargă astfel:

if (http.readyState==4 && http.status==200){
    switch (http.responseText){
        case 'fail':
            //the username was not provided
        break;
        case 'user_exists':
            //the username already exists
        break;
        case 'user_doesnt_exist':
            //the username was not found on the database, continue
        break;

    }
}
0
adăugat
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com

PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT

MySQL - comunitatea Română
MySQL - comunitatea Română
19 participanți

Comunitatea română a programatorilor MySQL.