客户端完成后的服务器端验证

时间:2014-06-27 05:26:36

标签: php jquery ajax

假设我有一个登录表单,其中有两个表单元素,即用户名和密码。但在客户端验证中,我没有在用户名中设置必需选项。我的目标是在进行客户端验证之后,我想通过ajax从服务器端对此进行变更,其中将在服务器端验证用户名字段,如果用户名为空,则将php检查和响应作为json。我想解析数据并显示验证错误,并在登录表单中显示登录验证错误消息到不同的div元素。但是无法得到这个。请帮我解决这个问题。

$(document).ready(function(){

        // initialize validator and add the custom form submission logic
            $("#LoginForm").validator().submit(function(e) {

                    var form = $(this);

                    // client-side validation passed
                        if (!e.isDefaultPrevented()) {


                            $.ajax({
                                type: "POST",
                                url: "process.login.php",
                                data: $('#LoginForm').serialize(),
                                dataType: "json",
                                success: function(msg){

                                    if(parseInt(msg.status)==1)
                                        {   
                                            window.location=msg.txt;
                                        }
                                 }
                            });


                            // prevent default form submission logic
                            e.preventDefault();
                        }
                    });

                });

2 个答案:

答案 0 :(得分:0)

我想你想知道php(服务器)验证响应是如何工作的?

<?php

// your validation here ...

$msg = array("status"=>1, "text"=>"some text here");

echo json_encode($msg);

答案 1 :(得分:0)

这可能会有所帮助..我必须在隐藏的表单变量中欺骗您的响应,但您应该获取消息和状态并处理它。还要注意服务器端错误。

我还按照你设置的方式修复了你的验证,但是你可能想要阅读关于jQuery验证器的最佳实践的文档。

http://jsfiddle.net/Xedus129/y6fA3/

ajax调用中的错误处理/成功处理:

            success: function (msg) {
                var status = parseInt(msg.status);
                var message = msg.message;
                return handleResponse(status,message);
            },

            error: function (xhr, ajaxOptions, thrownError) {
                //this is a fatal error
                alert(xhr.status);
                alert(thrownError);
            }

希望这就是你所要求的,很难从你的问题中得知。