jQuery Validate remote method usage to check if username already exists

12,685

Solution 1

I've managed to get this to work by changing the PHP technique I was using, here's my PHP:

<?php
require_once "./source/includes/data.php";
header('Content-type: application/json');
$request = $_REQUEST['username'];

$query = mysql_query("SELECT * FROM mmh_user_info WHERE username ='$username'");
$result = mysql_num_rows($query);
if ($result == 0){
$valid = 'true';}
else{
$valid = 'false';
}
echo $valid;
?>

Thanks everyone here for your help :)

Solution 2

I have two resources for to look at.

Official example from the validate plugin: http://jquery.bassistance.de/validate/demo/milk/

jQuery forum solution: http://forum.jquery.com/topic/jquery-validation-plugin-remote-validation-problem-locks-up

The possible solution is that the response does not need to be json encoded as far as I can tell. Since json needs key value pairs, suppling just the value won't work. So try to just echo it out as 'true' or 'false' strings.

Second, the validate uses GET for the form submission method, not POST.

NOTE: JUST FOUND POSSIBLE SOLUTION QUESTION jQuery Remote validation

Share:
12,685
Rounds
Author by

Rounds

Updated on June 19, 2022

Comments

  • Rounds
    Rounds about 2 years

    I want to validate if username exists in database using jQuery.validate so here's what I have so far:

    jQuery:

        $("#signupForm").validate({
            rules: {
                username: {
                    required: true,
                    minlength: 3,
                    remote: "check-username.php"
                    }
                },
            messages: {
                username:{
                    remote: "This username is already taken! Try another."
                }
            }
      });
    

    check-username.php:

    <?php
    
    require_once "./source/includes/data.php";
    header('Content-type: application/json');
    
    $name = mysql_real_escape_string($_POST['username']);
    
    $check_for_username = mysql_query("SELECT username FROM mmh_user_info WHERE username='$name'");
    
    if (mysql_num_rows($check_for_username) > 0) {
        $output = true;
    } else {
        $output = false;
    }
    echo json_encode($output);
    ?>
    

    This code always shows an error that the username is taken even if it's not.

    I'm using jQuery Mobile 1.9.1

    Thanks in advance.

  • CP510
    CP510 about 11 years
    Well that does a bit actually. Unfortunatly I am not to knowledgable on jQuery Mobile. If anyone else is, they should feel free to correct us. :)
  • user9437856
    user9437856 about 6 years
    5 years gone and still helpful to me.upvote from my side