【问题标题】:Changing the action on submiting a form更改提交表单的操作
【发布时间】:2012-04-11 20:47:55
【问题描述】:

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

我的脚本代码是这样的:

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

【问题讨论】:

  • 你可以使用 window.location 重定向吗?

标签: jquery jqueryform


【解决方案1】:

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

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

【讨论】:

  • 但我希望用户登录到他各自的子域,重定向不会发送帖子数据
  • @Palantir,但是一旦您根据电子邮件获得了正确的子域,这应该意味着用户已经登录,对吧?为什么他们必须登录两次?
  • 它不会登录两次,这正是重点,验证是为了确定它应该登录的位置。
【解决方案2】:

我明白了,感谢我的一个朋友。问题是子域中的登录,它以 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);
                    }
                }
            })
        })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 2021-11-16
    • 2017-05-23
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多