我們正在嘗試將 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) } }
1 回答

慕哥6287543
TA貢獻1831條經驗 獲得超10個贊
當您發出 AJAX 請求時,這都是 JavaScript,而不是用戶看到的頁面。因此,當您的 AJAX 請求獲得重定向響應時,AJAX 請求就會被重定向。僅當用戶導航到的 URL 返回重定向時,用戶看到的頁面才會重定向。如果你想要 JavaScript 改變瀏覽器頁面,你必須編寫 JS 來做到這一點,它不會自動發生。
- 1 回答
- 0 關注
- 130 瀏覽
添加回答
舉報
0/150
提交
取消