【发布时间】:2016-03-11 07:14:12
【问题描述】:
从上一页收集数据后,我想向客户显示另一页。但是我在服务器端重定向新 URL 时遇到了麻烦。这是我的逻辑:
- 通过 POST 操作向服务器提交用户输入;
- 服务器运行函数 saveChoice() 将用户输入保存到数据库中;
- 用户输入保存后,服务器向客户端发送一个新的URL;
- 当客户端获取新 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>
我可以知道如何重定向到新页面吗?
附言如果我将 URL 放在按钮上,那么服务器将不会运行 saveChoice()
【问题讨论】:
-
其实有效的部分就是像Aruna说的那样加上if r.Method=="GET",这样可以防止重定向2页的错误
标签: go