1

HTMLページへのフォーム送信jqueryを使用しています。データは、バックエンド beego (golang フレームワーク) コントローラーに正常に配信されます。いくつかの機能を実行した後、コントローラーは次にリダイレクトする場所を決定する必要がありました。しかし、これはjqueryによってブロックされています。goコードを使用してjqueryとリダイレクトをオーバーライドするにはどうすればよいですか?

私のスクリプト

$().ready(function() {
    $("#signupForm").validate({
        rules: {
            fullname: "required"                
        },
        messages: {
            fullname: "Please enter your full name"
        },
        submitHandler: function(form){
            $(form).ajaxSubmit({
                    url: '/add_user',
                    type: 'POST',
                    dataType: 'html',
                    data : $( "#signupForm" ).serialize(),
                    success : function(data) {

                    }
            });
            return false
        }
    });
});

私のコード

status := user.AddUserAndCompany(company)
switch status {
case true:
    this.Data["Website"] = "beego.me"
    this.Data["Email"] = "astaxie@gmail.com"
    this.TplName = "index.tpl"
case false:
    this.Data["ErrorMessage"] = "ServerConnectionError"
    this.Layout = "layouts/header_logout.html"
    this.TplName = "templates/registration.html"
}
4

2 に答える 2

0

私がやったことは完璧な方法ではありません。しかし、それは私の問題を解決しました。だから私はそれを共有しています。この問題に対するすべての提案とその他の解決策を歓迎します。

switch dbStatus {
    case 0://db Error
        dataToClient = "Server Connection Error"
        this.Ctx.ResponseWriter.Write([]byte(dataToClient)) //Error_msg_1
    case 1://Email already in use
        dataToClient = "EmailError"
        this.Ctx.ResponseWriter.Write([]byte(dataToClient)) //Error_msg_2
    case 2://UserName already in use
        dataToClient = "UserNameError"
        this.Ctx.ResponseWriter.Write([]byte(dataToClient)) //Error_msg_3
    case 3://Everything is fine
        if user.UserType == 0 { //Choosing the url
            dataToClient = "/admin_home" //url_1
            this.Ctx.ResponseWriter.Write([]byte(dataToClient))
        } else {
            dataToClient = "/user_home" //url_2
            this.Ctx.ResponseWriter.Write([]byte(dataToClient))
        }
    }

バックエンドからリダイレクトする方法を見つけることができませんでした。そこで、バックエンドから URL パスを選択し、それをフロントエンドに送信するようにコーディングしましたthis.Ctx.ResponseWriter.Write([]byte(dataToClient))

今フロントエンドで私は次のことをしました:

$("#signupForm").validate({
            rules: {
                fullName: "required"
            },
            messages: {
                fullName: "Please enter your full name"
            },
            submitHandler: function(form){
                $(form).ajaxSubmit({
                        url: '/add_user',
                        type: 'POST',
                        dataType: 'html',
                        data : $( "#signupForm" ).serialize(),
                        success : function(data) {
                            //Checking whether the data from back-end is an url or not... 
                            if (data.charAt(0) === '/'){ // if url
                                window.location.href = data;
                            }else{ //else error message
                                document.getElementById('regError').innerHTML = data;
                            }

                        }
                });
                return false
            }
        });
    });
于 2016-07-05T05:21:12.400 に答える
-1

c.Redirect(redirectURL, 302) を使用して完全に新しいコントローラーにリダイレクトできませんか?ここで、「c」はコントローラーです。

私は基本的に「/」、「/register」などに異なるコントローラーを使用しています。

于 2016-06-11T19:51:36.033 に答える