客户端完成后的服务器端变更


Server side varification after client side done

假设我有一个登录表单,其中两个表单元素即用户名和密码。但在客户端验证我没有设置用户名所需的选项。我的目标是让客户端验证后,我想通过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();
                        }
                    });
                });

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

<?php
// your validation here ...
$msg = array("status"=>1, "text"=>"some text here");
echo json_encode($msg);

这可能有帮助。我不得不欺骗你的响应在隐藏的形式变量,但你应该抓住消息和状态,并处理它。还可以捕获服务器端错误。

我也修复了你的验证,你有它设置的方式,但你可能想要阅读关于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);
            }

希望这就是你想问的,从你的问题中很难看出