更改提交表单的操作

时间:2012-04-11 20:47:56

标签: jquery jqueryform

首先,我将尝试解释我想做的事情:
我有一个创建动态子域的系统,每个子域都有自己的数据库和规则集。在我的主页面中,我有一个登录表单,用于根据给定的电子邮件访问正确的子域。没关系,但我需要的是: 在检查哪个是正确的子域之后,脚本应该如何将表单操作更改为登录并重定向到给定的子域?

我的脚本代码是这样的:

function myJson(url, postData) {
        Jsondata = $.ajax({
            url : url,
            data : postData,
            type : 'post',
            dataType : 'json',
            async : false
        }).responseText;
        return jQuery.parseJSON(Jsondata);
    }
    $(function() {
        function beforeRequest(formData, jqForm) {
            var url = jqForm.attr('action');
            var data = jqForm.serialize();
            var jsonData = myJson(url, data);
            if (jsonData.success == true) {
                jqForm.attr('action',jsonData.loginUrl);
            } else {
                $("#login-form > .error-tooltip").find('span').empty().text(jsonData.msg).end().fadeIn(300);
                return false;
            }
            return true;
        }
        $("#login-form").submit(function() {
            $(this).ajaxSubmit({
                beforeSubmit : beforeRequest
            });
            return false;
        })
    })

如果有一种方法可以在没有插件的情况下执行此操作ajaxForm(根本没有插件)将非常有必要。 我制作的这个脚本,它进行验证,更改了表单操作,但它没有重定向。
我缺少什么?

2 个答案:

答案 0 :(得分:0)

你不能简单地在if块中重定向,如

if (jsonData.success == true) {
 location.href='your sub domain to redirect to';

答案 1 :(得分:0)

我想通了,感谢我的一位朋友。问题是在子域中登录,它以302状态响应,而jquery ajax上的成功只需要状态200,这是有效的代码:

$("#login-form").submit(function(e) {
            e.preventDefault();
            var url = $(this).attr("action");
            var data = $(this).serialize();
            $.ajax({
                url : url,
                data : data,
                type : 'post',
                dataType : 'json',
                beforeSend : function() {
                    $("#login-form > .error-tooltip").fadeOut(300);
                },
                success:function(jsonData){
                    if(jsonData.sucsess == true){
                        $.ajax({
                            url: jsonData.loginSite,
                            data:data,
                            type:'post',
                            complete:function(){
                                window.location = jsonData.site;    
                            }
                        })
                    }else{
                        $("#login-form > .error-tooltip").find('span').empty().text(jsonData.msg).end().fadeIn(300);
                    }
                }
            })
        })