我有一个在Go中成功呈现的HTML表。我有:
mux := http.NewServeMux()
mux.HandleFunc("/", showTable)
mux.HandleFunc("/analyse", analyse)
http.ListenAndServe(":8080", mux)
函数showTable
可以正确呈现HTML表和“确定”按钮。 HTML包含一些javascript,因此,当单击“确定”时,会将一些数据发布到/ analyse。 javascript是:
var i;
for (i = 0; i < selected.length; i++) {
$.post("/analyse", selected[i], function(data,status){
//alert(data);
});
$.post("/analyse", selected1[i], function(data,status){
//alert(data);
});
}
$.post("/analyse", "done", function(data,status){
alert(status);
});
selected[]
和selected1[]
包含表中当前选定的有效数据。
analyse
函数如下所示:
func analyse(w http.ResponseWriter, r *http.Request) {
log.Println("In analyse")
if r.Method == "POST" {
buf := new(bytes.Buffer)
buf.ReadFrom(r.Body)
newStr := buf.String()
log.Println("Here's the body", newStr)
if newStr == "done" {
log.Println("Done detected")
io.WriteString(w, "Some valid HTML")
}
}
}
运行代码时,将呈现HTML表以及“确定”按钮。单击“确定”按钮后,将调用analyse
函数,检测到POST,并成功执行行log.Println("Done detected")
。此时,我想向页面呈现“一些有效的HTML”(在我的代码中这实际上是有效的HTML)。在我看到的示例中,我认为通过http.ResponseWriter w编写将呈现“一些有效的HTML”,但事实并非如此。我还尝试在javascript中发布到“ /”并在Go代码中检测到POST事件。同样,我可以检测到该事件,但是无法将HTML呈现到页面。
感谢您在理解POST事件后如何成功呈现HTML方面提供的帮助。