dqqyp90576 2014-09-17 08:26
浏览 35
已采纳

使用PHP和Jquery Ajax进行输入验证

I want to validate an user input with ajax. It is the first time I use Ajax and I got stuck. If the input is correct I still get an error message and I don't know why.

I get as an error 'Subtax error in the jquery file'. What do I do wrong? Thank you in advance.

HTML:

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
                <div class="form-group">
                    <label for="inputName">Your name</label>
                    <input type="text" name="inputName" class="form-control" id="inputName"   placeholder="Name">
                </div>

                <div class="form-group">
                    <label for="inputEmail">Your e-mail</label>
                    <input type="text" name="inputEmail" class="form-control" id="inputEmail"    placeholder="E-mail">
                </div>                    

                <div class="form-group">
                    <label for="inputMess">Your message for us</label>
                    <textarea name="inputMess" class="form-control" id="inputMess"></textarea>
                </div>

                <button type="submit" name="send" class="btn btn-default">Send</button>
              </form>

              <div id='mess'></div>

PHP:

 <?php 

  sleep(1);

  $mail_reg = '/^(?i)(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9] {1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/';

$return = array();
$mesaj = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {


    if (empty($_POST['inputName']) || is_numeric($_POST['inputName'])) {

      $mesaj = "Please enter your name!";
      $return['error'] = true;
      $return['msg'] = 'oops'.$mesaj;
      echo json_encode($return);
      exit();

    } elseif (empty($_POST['inputEmail']) || !preg_match($mail_reg, $_POST['inputEmail'])) {

      $mesaj = "Please enter your e-mail!";
      $return['error'] = true;
      $return['msg'] = 'oops'.$mesaj;
      echo json_encode($return);
      exit();

    } elseif (empty($_POST['inputMess'])) {

      $mesaj = "Please tell us something";
      $return['error'] = true;
      $return['msg'] = 'oops'.$mesaj;
      echo json_encode($return);
      exit();

    } else {

      $return['error'] = false;
      $return['msg'] = 'Thank you for getting in touch. We will contact you!';
      echo json_encode($return);
       exit();

    }
  }


 ?> 

JavaScript:

$(document).ready(function() {

 var email_reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i;   

$('form').submit(function(event) {

  event.preventDefault();

  if ($('#inputName').val() == '' || $('#inputName').val().length < 2 || !isNaN($('#inputName').val())) {

    alert('Please enter your name');

  } else if (!email_reg.test($('#inputEmail').val())) {

    alert('Please enter a valid e-mail adress');

  } else if ($('#inputMess').val() == '' || !isNaN($('#inputMess').val())) {

    alert('Please tell us something');

  } else {

    var formData = $('form').serialize();
    submitForm(formData);

  }

})


function submitForm(formData) {

    $.ajax({

        type: 'POST',
        url: $('form').action,
        data: formData,
        dataType: 'json',
        cache: false,
        timeout: 7000,
        success: function(data) {


                $('#mess').text(data.msg);

        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {


                $('#mess').text('A communication error occured');

        },
        complete: function(XMLHttpRequest, status) {

            //$('form')[0].reset();

        }

    })
}


  })
  • 写回答

2条回答 默认 最新

  • drqyxkzbs21968684 2014-09-17 08:37
    关注

    There might be some problem with your jquery file inclusion. Your code is working absolutely fine with me. I tried your code by saving it in a new php file as follows.

    <?php 
    
      sleep(1);
    
      $mail_reg = '/^(?i)(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9] {1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/';
    
    $return = array();
    $mesaj = '';
    
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    
    
        if (empty($_POST['inputName']) || is_numeric($_POST['inputName'])) {
    
          $mesaj = "Please enter your name!";
          $return['error'] = true;
          $return['msg'] = 'oops'.$mesaj;
          echo json_encode($return);
          exit();
    
        } elseif (empty($_POST['inputEmail']) || !preg_match($mail_reg, $_POST['inputEmail'])) {
    
          $mesaj = "Please enter your e-mail!";
          $return['error'] = true;
          $return['msg'] = 'oops'.$mesaj;
          echo json_encode($return);
          exit();
    
        } elseif (empty($_POST['inputMess'])) {
    
          $mesaj = "Please tell us something";
          $return['error'] = true;
          $return['msg'] = 'oops'.$mesaj;
          echo json_encode($return);
          exit();
    
        } else {
    
          $return['error'] = false;
          $return['msg'] = 'Thank you for getting in touch. We will contact you!';
          echo json_encode($return);
           exit();
    
        }
      }
    
    
     ?> 
    <html>
    <head>
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    </head>
    <body>
    <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
                    <div class="form-group">
                        <label for="inputName">Your name</label>
                        <input type="text" name="inputName" class="form-control" id="inputName"   placeholder="Name">
                    </div>
    
                    <div class="form-group">
                        <label for="inputEmail">Your e-mail</label>
                        <input type="text" name="inputEmail" class="form-control" id="inputEmail"    placeholder="E-mail">
                    </div>                    
    
                    <div class="form-group">
                        <label for="inputMess">Your message for us</label>
                        <textarea name="inputMess" class="form-control" id="inputMess"></textarea>
                    </div>
    
                    <button type="submit" name="send" class="btn btn-default">Send</button>
                  </form>
    
                  <div id='mess'></div>
                  <script>
                  $(document).ready(function() {
                  var email_reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i;   
    
    $('form').submit(function(event) {
    
      event.preventDefault();
    
      if ($('#inputName').val() == '' || $('#inputName').val().length < 2 || !isNaN($('#inputName').val())) {
    
        alert('Please enter your name');
    
      } else if (!email_reg.test($('#inputEmail').val())) {
    
        alert('Please enter a valid e-mail adress');
    
      } else if ($('#inputMess').val() == '' || !isNaN($('#inputMess').val())) {
    
        alert('Please tell us something');
    
      } else {
    
        var formData = $('form').serialize();
        submitForm(formData);
    
      }
    
    })
    
    
    function submitForm(formData) {
    
        $.ajax({
    
            type: 'POST',
            url: $('form').action,
            data: formData,
            dataType: 'json',
            cache: false,
            timeout: 7000,
            success: function(data) {
    
    
                    $('#mess').text(data.msg);
    
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
    
    
                    $('#mess').text('A communication error occured');
    
            },
            complete: function(XMLHttpRequest, status) {
    
                //$('form')[0].reset();
    
            }
    
        })
    }
    
    
      })
                  </script>
                  </body>
                  </html>
    

    Output:

    enter image description here

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了