gpt4 book ai didi

javascript - 如何使用go和javascript在json发布后重定向浏览器?

转载 作者:行者123 更新时间:2023-12-01 22:35:18 26 4
gpt4 key购买 nike

我们正在尝试将JSON中的HTML表单发送到GO代码。我们已经实现了,但是现在我们很困惑,因为我们无法使浏览器重定向到相应的网页。重定向指令可以很好地在Insomnia上直接发送json(返回成功状态并显示新页面),但在浏览器中无法正常工作。也许我们缺少一些代码,但是找不到丢失的代码。请帮忙。

发送json的javascript代码:

  jQuery(document).on('submit', '#login', function(event){
event.preventDefault();

jQuery.ajax({
url: '/login/',
type: 'POST',
dataType: 'json',
data: JSON.stringify($(this).serializeFormJSON())
})
.done(function(response){
location.href = 'response';
})
.fail(function(resp){
console.log("resp");
})
.always(function(){
console.log("complete");
})
});

验证此表单的Go代码:
    func POSTLoginHandler(w http.ResponseWriter, r *http.Request) {
var user users.User
err := json.NewDecoder(r.Body).Decode(&user)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
} else {
validCredentials, err := users.ValidarCredenciales(user)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
} else if validCredentials {
err = cookies.GenerarCookie(w, r, user.Email)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
} else {
http.Redirect(w, r, "/dashboard/", http.StatusSeeOther)
}
} else {
http.Redirect(w, r, "/forbidden/", http.StatusSeeOther)
}
}
}


func GetDashboardUser(w http.ResponseWriter, r *http.Request) {
exists, err := cookies.VerifyCookie(r)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
} else if exists {
http.ServeFile(w, r, "static/template.html")
} else {
http.Redirect(w, r, "/", http.StatusSeeOther)
}
}

最佳答案

当您发出AJAX请求时,仅是JavaScript,而不是用户看到的页面。因此,当您的AJAX请求获得重定向响应时,将重定向AJAX请求。用户看到的页面仅在其导航到的URL返回重定向时才被重定向。如果您希望JavaScript更改浏览器页面,则必须编写JS,这样它才能自动发生。

关于javascript - 如何使用go和javascript在json发布后重定向浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58292544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com