简体   繁体   English

如何通过JQuery Ajax调用在PHP中验证表单?

[英]How do I validate my form within PHP via JQuery Ajax call?

How do I validate my code in PHP without getting error messages defined in the ajax definition in main.js? 如何在PHP中验证我的代码而又不会在main.js的ajax定义中定义错误消息?

Note: Chrome console returning: XMLHttpRequest cannot load file:///C:/Documents/Mini%20Revision%20Projects/Project%20Website%203/ajax.php. 注意:Chrome控制台返回:XMLHttpRequest无法加载文件:/// C:/Documents/Mini%20Revision%20Projects/Project%20Website%203/ajax.php。 Received an invalid response. 收到无效的回应。 Origin 'null' is therefore not allowed access. 因此,不允许访问原始“空”。

Below is my code: 下面是我的代码:

main.html main.html中

<!DOCTYPE HTML>
<html>
    <head>  
        <script type="text/javascript" src="C:\Documents\jQuery\jquery2.js"></script>
    </head> 

    <body>

        <ul id="info1">
                <li>Put anything in the field below.</li>
        </ul>
        <form id="form1">
                <input type="text" name="field1" id="field1">
                <input type="submit" name="submit" id="submit" value="Submit Form">
        </form>

        <script type="text/javascript" src="main.js"></script>  

    </body>

</html>

main.js main.js

$(document).ready(function() {

    $("#form1").submit(function( event ) {
        event.preventDefault();
        //alert("happy");
        $.ajax({
            type: 'POST',
            url: 'ajax.php',
            data: $(this).serialize(),
            dataType: 'json',
            success: function (data) {
                console.log(data);
                $("#info1").html(data.msg);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert("Status: " + textStatus);
                alert("Error: " + errorThrown);
            }
        });
    });
});

ajax.php ajax.php

<?php
    class ajaxValidate {

            function formValidate() {
                    //Put form elements into post variables (this is where you would sanitize your data)
                    $field1 = @$_POST['field1'];

                    //Establish values that will be returned via ajax
                    $return = array();
                    $return['msg'] = '';
                    $return['error'] = false;

                    //Begin form validation functionality
                    if (!isset($field1) || empty($field1)){
                            $return['error'] = true;
                            $return['msg'] .= '<li>Error: Field1 is empty.</li>';
                    }

                    //Begin form success functionality
                    if ($return['error'] === false){
                            $return['msg'] = '<li>Success Message</li>';
                    }

                    //Return json encoded results
                    return json_encode($return);
            }

    }

    $ajaxValidate = new ajaxValidate;
    echo $ajaxValidate->formValidate();
?>

First of all, verify if PHP is not returning a warning or critical error. 首先,验证PHP是否未返回警告或严重错误。 Insert this code in top of your code. 将此代码插入代码顶部。 If PHP returns a hidden error, the success data value will be null. 如果PHP返回隐藏的错误,则成功数据值将为null。

ini_set("display_errors", "On");
error_reporting(E_ALL);

PHP Error reporting manual PHP错误报告手册

PHP run-time display_error PHP运行时display_error

I think that if you are returning a JSON array in php, you need to call an array. 我认为,如果要在php中返回JSON数组,则需要调用一个数组。

$("#info1").html(data['msg']);

Try to return the post values to verify if $_POST is not empty: 尝试返回发布值以验证$ _POST是否不为空:

return json_encode($_POST);

You don't need to define an empty array if you define directly a first row. 如果直接定义第一行,则无需定义空数组。

//$return = array();
$return['msg'] = '';

you need to have PHP server in order to PHP scripts to work. 您需要安装PHP服务器才能运行PHP脚本。 install something like XAMPP (windows) or MAMP (linux) 安装类似XAMPP(windows)或MAMP(linux)的东西

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

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