为了账号安全,请及时绑定邮箱和手机立即绑定

使用jquery表单提交时如何从golang重定向到另一个模板?

使用jquery表单提交时如何从golang重定向到另一个模板?

Go
Qyouu 2022-01-04 21:10:10
我正在使用表单提交 jquery 到 html 页面。数据成功传送到我的后端 beego(golang framework) 控制器。运行某些功能后,控制器必须决定下一步重定向的位置。但这被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"}
查看完整描述

2 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

我最终做的并不是一个完美的方法。但它解决了我的问题。所以我正在分享它。我欢迎针对此问题的所有建议和任何其他解决方案。


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

            }

        });

    });


查看完整回答
反对 回复 2022-01-04
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

你不能用 c.Redirect(redirectURL, 302) 重定向到一个全新的控制器,其中 'c' 是你的控制器吗?

我基本上对“/”、“/register”等使用不同的控制器。


查看完整回答
反对 回复 2022-01-04
  • 2 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信