Iemand die weet wat er fout gaat? Ik probeer via jQuery Validation te controleren of een email adres al bestaat. Maar krijg het niet voor elkaar.

Mijn email formulier:

<form  action="register_form.php" name="registratieformulier" method="post" id="register_form">

		<div class="regform" >
		<label for="email">Email:*</label>
		<input type="text" name="email" id="email" value="" />
		</div>
		
		<div class="regform" > 
		<input type="submit" name="register" class="b_verzenden" value="verzenden"/>
		</div>
</form>


Het script:

$().ready(function() {
	
	$.validator.methods.email_adres = function( value, element ) {
  return this.optional( element ) || /[a-z]+@[a-z]+\.[a-z]+/.test( value );
};
	$.validator.methods.lettercijf = function( value, element ) {
  return this.optional( element ) || /^[a-z0-9]+$/i.test(value);
};

	$("#register_form").validate({
			onkeyup: false, 
			ignore: ".ignore",
			rules: {
				firstname: {
					required: true,
					lettersonly: true,
					nowhitespace: true,
					minlength: 2,
					maxlength: 15,
				},
				lastname: {
					required: true,
					minlength: 2,
				},
				email: {
					email_adres: true,
					required: true,
					remote: {
                    url: "register.php",
                    type: "post",
					data: {
                    email: function() { 
                        return $("#email").val();
							}                       
                		}
					}
				},


register.php

// Check if user with that email already exists
$result = $connect->query("SELECT * FROM users WHERE email='$email'") or die($connect->error());

	// We know user email exists if the rows returned are more than 0 als het email adres niet bestaat gaat de procedure verder.
	if ( $result->num_rows > 0 )  {
		
        echo ('true');  //good to register
    }
    else
    {
        echo ('false'); //already registered
    }


Ik heb het ook nog met een apart bestandje geprobeerd ipv register.php:

if (!empty($_POST['email']))
{
    $email = $connect->real_escape_string($_POST['email']);
    $query = "SELECT ID FROM users WHERE user_email = '{$email}' LIMIT 1;";
    $results = $connect->query($query);
    if($results->num_rows == 0)
    {
        echo 'true';  //good to register
    }
    else
    {
        echo 'false'; //already registered
    }
}


Ik weet dat de register.php goed moet zijn die geeft aan of er wel of geen email bestaat zonder jQuery.

Ook heb ik alles van deze pagina geprobeerd.

Maar bij alles geen succes.
Ik durf het bijna niet te zeggen maar ik had een flinke fout gemaakt al werkt het nog niet helemaal.. maaar.. (schaam) het was niet
$query = "SELECT ID FROM users WHERE user_email = '{$email}' LIMIT 1";
maar alleen email ipv user_email. Ik krijg nu als antwoord JSON

[size=xsmall]Toevoeging op 18/09/2017 12:41:57:[/size]

Ik krijg nu true of fals terug alleen de remote melding komt niet.
De validatie verwacht een JSON-string terug:

The serverside response must be a JSON string that must be "true" for valid elements, and can be "false", undefined, or null for invalid elements, using the default error message. If the serverside response is a string, eg. "That name is already taken, try peter123 instead", this string will be displayed as a custom error message in place of the default.
Zware bevalling, maar het is gelukt :) Bedankt voor alle tijd en hulp!

Reageren