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 に答える