Estoy tratando de verificar la existencia de un nombre de usuario ya registrado en mi aplicación usando jQuery+Ajax+POST.
HTML
<div class="form-group"> <label for="username" class="col-md-3 control-label">Username</label> <div class="col-md-9"> <input type="text" id="username" class="form-control" name="username" placeholder="Username"> </div> </div> <div class="col-sm-9 col-sm-offset-3" id="userCheck"> <div class="alert alert-info" id="userCheckLabel"></div> </div>jQuery
$('#username').focusout(function() { var username = $('#username').val(); checkUserExist(username); }) function checkUserExist($uname) { $.post( "../core/lib/checkUserExist.php", function( data ) { if(data.html == 'true') { $('#userCheck').slideDown("slow"); $('#userCheckLabel').text("This user already exist!") } });PHP
<?php require_once('../../core/class.user.php'); $user = new USER(); $uname = $_POST['username']; $stmt = $user->runQuery("SELECT user_nameFROM users WHERE user_name=:uname "); $stmt->execute(array(':uname'=>$uname)); $row=$stmt->fetch(PDO::FETCH_ASSOC); if($row['user_name']==$uname) { print 'true'; } else { print 'false'; } ?> No incluyo class.user.php porque solo está manejando la conexión PDO. Si if(data.html == 'true') la conexión funciona como se esperaba y aparece el mensaje.
Comportamiento
El código funciona si if(data.html == 'true') . pero con esto no hace nada, no hay errores en consola. Así que creo que el error está en la forma en que manejo la parte de PHP. ¿Cualquier sugerencia?
Dado que está devolviendo una cadena, no HTML, debe hacer lo siguiente:
$.post( "../core/lib/checkUserExist.php",{username: uname }, function( data ) { console.log(data);// check this and let me know the output if(data == 'true') { // or try if(data) $('#userCheck').slideDown("slow"); $('#userCheckLabel').text("This user already exist!") } });