繁体   English   中英

PHP Ajax表单验证未传递json

[英]PHP Ajax form validation not passing json

我一直在尝试修复我的代码几天,没有运气。 我正在尝试使用AJAX验证我的登录表单。 jQuery AJAX不断使用以下命令记录控制台

检查字段时出现问题

这是我的Jquery脚本,它与登录表单在同一页面上(Jquery包含在标题中):

var data = {};
    $(document).ready(function() {
      $('input[type="submit"]').on('click', function() {
          resetErrors();
          var url = 'login.php';
          $.each($('form input, form select'), function(i, v) {
              if (v.type !== 'submit') {
                  data[v.name] = v.value;
              }
          }); //end each
          $.ajax({
              dataType: 'json',
              type: 'POST',
              url: url,
              data: data,
              success: function(resp) {
                  if (resp === true) {
                        //successful validation
                          $('form').submit();
                        return false;
                  } else {
                      $.each(resp, function(i, v) {
                console.log(i + " => " + v); // view in console for error messages
                          var msg = '<label class="error" for="'+i+'">'+v+'</label>';
                          $('input[name="' + i + '"], select[name="' + i + '"]').addClass('inputTxtError').after(msg);
                      });
                      var keys = Object.keys(resp);
                      $('input[name="'+keys[0]+'"]').focus();
                  }
                  return false;
              },
              error: function() {
                  console.log('there was a problem checking the fields');
              }
          });
          return false;
      });
    });
    function resetErrors() {
        $('form input, form select').removeClass('inputTxtError');
        $('label.error').remove();
    }

我的表格:

        <label>Username *</label>
        <input name="user" class="form-control" placeholder="Username" required autofocus><br>
        <label>Password *</label><br>
        <input type="password" name="password" class="form-control" placeholder="Password" required>
        <input type="submit" name="submit" value="login" />

我的PHP(已删除的不相关代码):

    else{
        $_SESSION['errors']['user'] = "login failed";
        echo "Login failed: (" . $stmt->errno .")" . $stmt->error;
    }
$stmt->close();


        if(count($_SESSION['errors']) > 0){
            if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
                header('Content-type: application/json');
                echo json_encode($_SESSION['errors']);
                exit;
             }
        }

经过我自己的研究,我相信我的Jquery出了点问题,但是我无法找出答案。

先感谢您! :)

您的代码肤色繁多,请尝试使用此代码

<!DOCTYPE 'html'>
<html>
<head>
<script src="jquery.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>


</head>

<body>
<form id="frmAdd" method="post" onsubmit="return false">
 <label>Username *</label>
        <input name="user" class="form-control" placeholder="Username" required autofocus><br>
        <label>Password *</label><br>
        <input type="password" name="password" class="form-control" placeholder="Password" required>
        <input type="submit" name="submit" value="login" />
</form>

<script>
var data = {};
    $(document).ready(function() {
       $("#frmAdd").validate({
         submitHandler: function() {
                    $("#frmAdd").submit();
                }
       });
      $('#frmAdd').on('submit', function() { 
        var url = 'login.php';
          $.each($('form input, form select'), function(i, v) { 
              if (v.type !== 'submit') {
                  data[v.name] = v.value;
                }
          }); //end each
          $.ajax({
              dataType: 'json',
              type: 'POST',
              url: url,
              data: data,
              success: function(resp) {
                  if (resp === true) {
                        //successful validation
                          $('form').submit();
                        return false;
                  } else {
                      $.each(resp, function(i, v) {
                console.log(i + " => " + v); // view in console for error messages
                          var msg = '<label class="error" for="'+i+'">'+v+'</label>';
                          $('input[name="' + i + '"], select[name="' + i + '"]').addClass('inputTxtError').after(msg);
                      });
                      var keys = Object.keys(resp);
                      $('input[name="'+keys[0]+'"]').focus();
                  }
                  return false;
              },
              error: function() {
                  console.log('there was a problem checking the fields');
              }
          });
          return false;
      });

    });

</script>
        </body>
</html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM