从上一页收集到数据后,我想向客户显示另一页。但是我在服务器端重定向新URL时遇到麻烦。这是我的逻辑:
我坚持执行第3步(这里是流程示例):
type Stuff struct{
List []string
}
func checkcheck(w http.ResponseWriter, r *http.Request) {
sinfo := Stuff{
List: some_slice
}
t, err := template.New("").Parse(tpl_ds)
checkErr(err)
err = r.ParseForm()
checkErr(err)
err = t.Execute(w, sinfo)
checkErr(err)
if r.Method == "POST" {
saveChoice(r.Form["choices"])
/* step 3: make user open another URL */
}
}
这是模板:
<html>
<script>
$(function () {
$('form').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
data: $('form').serialize(),
});
});
});
</script>
<body>
<form method="POST">
{{range .List}}
<input type="checkbox" name="choices" value="{{.}}"> <span>{{.}}</span><br>
{{end}}
<input type="submit" value="Submit">
</form>
</body>
</html>
我可以知道如何重定向到新页面吗?
ps如果我将URL放在按钮上,则服务器将不会运行saveChoice()
http状态303是此处的适当响应。因此,使用它重定向请求。
if r.Method == "POST" {
saveChoice(r.Form["choices"])
http.Redirect(w, r, newUrl, http.StatusSeeOther)
}
并且如果您newUrl
应该将正确的html页面返回到浏览器,则无需使用ajax。使用HTML表单。
<form action="/postHandler" method="post">
{{range .List}}
<input type="checkbox" name="choices" value="{{.}}"> <span>{{.}}</span><br>
{{end}}
<input type="submit" value="Submit">
</form>
action
表格的通知定义为/postHandler
。将在其中运行您的saveChoice
函数的端点的名称放在此处。
因此,为了避免http: multiple response.WriteHeader calls
错误,您可以使用此代码。
func checkcheck(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
sinfo := Stuff{
List: some_slice
}
t, err := template.New("").Parse(tpl_ds)
checkErr(err)
err = r.ParseForm()
checkErr(err)
err = t.Execute(w, sinfo)
checkErr(err)
}
if r.Method == "POST" {
saveChoice(r.Form["choices"])
http.Redirect(w, r, newUrl, http.StatusSeeOther)
}
}
否则,服务器将尝试呈现表单和重定向的URL,这将导致对响应编写器的多次调用。
我已经重定向到网站的主页: 但是如果您键入,则重定向到但我需要立即重定向到
问题内容: 我正在通过Java访问网页,如下所示: 但是在某些情况下,一个URL重定向到另一个URL。所以我想知道以前的URL重定向到的URL。 以下是我作为响应得到的标题字段: 因此,目前,我正在根据标头字段的值构造重定向的url 。在上述情况下,重定向的网址为 有什么标准方法可以确定特定的URL将要重定向到哪个URL。 我知道,当一个URL重定向到其他URL时,服务器会发送一个中间响应,该响应
我有一个两步验证表单,这意味着第一个用户输入得到验证(在ValidatecKetData控制器中),如果一切正常,您可以进入下一个表单页面,我可以通过 问题:在第二页,用户需要上传一个文件,如果他不这样做,验证失败。 如果是这种情况,验证器类立即重定向,因为它是后路由,所以不起作用。 所以我创建了一个这样的获取路线: 并将其放入-方法: 我把它放到了-method中,因为如果用户不在第二页附加文件
问题内容: 如何将* .appspot.com域重定向到自定义域。我想要的是这样重定向域: 注意:我正在使用go and gorilla mux。 问题答案: 您可以按照此处所述的方法进行组合,以重用代码。 在您的情况下,组合器将如下所示(根据您的口味和要求进行调整): 您可以使用以下方法包装处理程序:
重定向到一个 URL 。 使用 window.location.href 或 window.location.replace() 重定向到 url 。 传递第二个参数来模拟链接点击(true - 默认值)或HTTP重定向(false)。 const redirect = (url, asLink = true) => asLink ? (window.location.href = url)
基本上:我如何访问或确定以前请求的URL? 我真的不想求助于传递查询字符串参数,除非我真的不得不这样做。理想情况下,最好能够将< code>history集合作为< code>Router组件的一部分,类似于< code>backbone.history!