Ajax代码在jquery表单验证中不起作用

时间:2014-12-28 21:20:56

标签: php jquery ajax validation

我想编写(注册部分)代码,可以检查过去是否使用过电子邮件或登录是否为空。

代码工作正常,但我的ajax代码根本不运行。

我检查了一切,php文件的路径很好,变量很好等等。不知道如何解决它。

代码:

$('.login').submit(function(e) {

    e.preventDefault();
    var error = 0;
    var self = $(this);

    var $name = self.find('[type=name]');
    var $email = self.find('[type=email]');
    var $pass = self.find('[type=password]');

    var emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;

    if (!emailRegex.test($email.val())) {
        createErrTult("Błąd! Email ma zły format!", $email)
        error++;
    }

    //MY AJAX CODE
    var email = $email.val();

    $.ajax({
        url: '../inc/rejestracja.php?action=emailcheck',
        data: {
            'email': email
        },
        type: 'POST',
        success: function(odp) {
            if (odp == 1) {
                createErrTult("Błąd! taki email już istnieje w bazie!", $email)
                error++;
            }
        }
    });

    if ($name.val().length > 1 && $name.val() != $name.attr('placeholder')) {
        $name.removeClass('invalid_field');
    } else {
        createErrTult('Error! Wrong name!', $name)
        error++;
    }

    if ($pass.val().length > 1 && $pass.val() != $pass.attr('placeholder')) {
        $pass.removeClass('invalid_field');
    } else {
        createErrTult('Error! Wrong password!', $pass)
        error++;
    }

    if (error != 0) return;
    self.find('[type=submit]').attr('disabled', 'disabled');

    self.children().fadeOut(300, function() {
        $(this).remove()
    })
    $('<p class="login__title">sign in <br><span class="login-edition">welcome to A.Movie</span></p><p class="success">You have successfully<br> signed in!</p>').appendTo(self)
        .hide().delay(300).fadeIn();

    // var formInput = self.serialize();
    // $.post(self.attr('action'),formInput, function(data){}); // end post
});

PHP:

<?php

include ("config.php");

  if($action == "emailcheck"){

      //sprawdzamy czy był już dodany plus
      $test = mysql_num_rows(mysql_query("select * from uzytkownicy where email='$email'"));
            if ($test > 0) {
                $dodano = 1;
                echo json_encode($dodano); 


      }
?>

2 个答案:

答案 0 :(得分:1)

首先,您应该尝试添加error回调:

$.ajax({
    url: '../inc/rejestracja.php?action=emailcheck',
    data: {
        'email': email
    },
    type: 'POST',
    success: function(odp) {
        if (odp == 1) {
            createErrTult("Błąd! taki email już istnieje w bazie!", $email)
            error++;
        }
    },
    error: function(xhr, textStatus, error) // THOSE ROWS
    {
       alert(error);
    }
});

这可能会提醒您一些发生的错误。

其次,您可以尝试使用json而不是纯文本:

客户端:

$.ajax({
    url: '../inc/rejestracja.php?action=emailcheck',
    data: {
        'email': email
    },
    dataType: 'json', // THIS ROW
    type: 'POST',
    success: function(odp) {
        if (odp['result'] == 1) {
            createErrTult("Błąd! taki email już istnieje w bazie!", $email)
            error++;
        }
    },
    error: function(xhr, textStatus, error)
    {
       alert(error);
    }
});

服务器端:

<?php

include ("config.php");
if (isset($_GET['action'])){
    $action = $_GET['action'];
    if($action == "emailcheck") {
      if(isset($_GET['email'])) {
        $email = $_GET['email'];
        //sprawdzamy czy był już dodany plus
        $test = mysql_num_rows(mysql_query("select * from uzytkownicy where email='$email'"));
        if ($test > 0) {
            $dodano = 1;
            echo (json_encode(array("result" => $dodano))); // THIS ROW
        }
      }
    }
}
?>

答案 1 :(得分:0)

在所有内容检查之前 config.php 文件路径..在您的情况下 config.php 应与 rejestracja.php 并尝试这个..让我们从ajax开始

$.ajax({
        url: '../inc/rejestracja.php?action=emailcheck',
        data: {
            email: email
        },
        type: 'GET',
        success: function(odp) {
            if (odp == 1) {
                alert('Email exists');
            }else{
                alert('Email dosen\'t exists');
            }
        }
    });

然后在php

<?php

include ("config.php");
if (isset($_GET['action'])){
   $action = $_GET['action'];
  if($action == "emailcheck"){
      if(isset($_GET['email'])){
         $email = $_GET['email'];
         //sprawdzamy czy był już dodany plus
         $test = mysql_num_rows(mysql_query("select * from uzytkownicy where email='$email'"));
            if ($test > 0) {
                $dodano = 1;
                echo ($dodano); 

        }
    }
}
?>

你应该警惕('电子邮件存在')