doudu9148 2015-12-08 23:42
浏览 18

使用AJAX / JSON进行PHP验证

My validation is in my php script encoded in json, I'm not sure how to implement it in my main JavaScript function. I'm using regular expressions to in my php script to validate the form criteria, I need to pass this to the JavaScript file and return a success massage for for each form id.
this is what I have so far.

$(document).ready(function()
{   
  $("#submit").click(function()
    {
        // Clear any success or error messages
        $("#success").html("");
        $("#errors").empty();
         //make an AJAX call here, and set error or success accordingly
        $.post('backend.php',{act:'validate'},
        function(getData)
        {
        //unsure about this function
        }
        });
        // prevents submit button default behavior
        return false;
    });  
});
<html>
    <head>
    </head>
    <body>
        <h1>Form Validation</h1>
        <form id="PersonForm">
            Name:
                <input id="name" type ="text" name="name"></input>
                <br><br>
            Postal Code:
                <input id="postal" type ="text" name="postal"></input>
                <br><br>
            Phone Number:
                <input id="phone" type ="text" name="phone"></input>
                <br><br>
            Address:
                <input id="address" type ="text" name="address"></input>
                <br><br>
            <input type="submit"></input>
        </form>
        <div id= "content"></div>
        <a href="frontend.html">Refresh</a>
        <a id="InsertDefault" href="#">Insert Default Data</a>
        <br><br>
        <p id='msg'></p>
        <ul id="errors"></ul>
        <p id="success"></p>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
        <script src="main.js" type="text/javascript"></script>
    </body>
</html>

<?php
if ($_REQUEST['act'] == 'validate')
{
  $validateData = array();
  if (preg_match("/^[A-Za-z]{3,20}$/",$_REQUEST['name'])) $validateData['name'] = 1;
  else $validateData['name'] = 0;

  if (preg_match("/^[0-9]{10}$/",$_REQUEST['phone'])) $validateData['phone'] = 1;
  else $validateData['phone'] = 0;

  if (preg_match("/^[A-Z][0-9][A-Z][0-9][A-Z][0-9]$/", $_REQUEST['postal'])) $validateData['postal'] = 1;
  else $validateData['postal'] = 0;

  if (preg_match("/^[0-9]{3} [A-Za-z]{3,10} Street$/", $_REQUEST['address'])) $validateData['address'] = 1;
  else $validateData['address'] = 0;

  echo json_encode($validateData);
}
else echo "Should not happen";
?>
</div>
  • 写回答

2条回答 默认 最新

  • doushajian2018 2015-12-09 00:12
    关注

    Well, this would be better suited for an actual ajax call set up like this (Not Tested)

    // Set values
    var values = {};
    values.act = "validate";
    values.name = $('[name="name"]').val();
    values.phone = $('[name="phone"]').val();
    values.postal= $('[name="postal"]').val();
    values.address= $('[name="address"]').val();
    
    $.ajax({
        type: 'POST',
        url:'backend.php',
        data: values,
        dataType: 'JSON',
        success: 
        function(result)
        {
            // Here you can access the json object like this and
            // do whatever you like with it
            console.log(result.name);
            console.log(result.phone);
            console.log(result.postal);
            console.log(result.address);    
        }
    });
    
    评论

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集