1

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

我的脚本代码是这样的:

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(根本没有插件)的情况下做到这一点,那将是非常有义务的。我制作的这个脚本,它进行验证,更改表单操作,但它不会重定向。
我错过了什么?

4

2 回答 2

0

你不能if像这样简单地在块中重定向吗

if (jsonData.success == true) {
 location.href='your sub domain to redirect to';
于 2012-04-11T20:55:50.393 回答
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);
                    }
                }
            })
        })
于 2012-04-12T12:43:29.347 回答