无法正确地将表单序列化为 json

无法正确地将表单序列化为 json

php小编香蕉为您介绍一种常见问题:无法正确地将表单序列化为json。在开发中,我们经常需要将表单数据以json格式传递给后端处理。然而,有时候我们会遇到一些问题,比如提交的数据无法正确地转换成json格式。这可能是由于表单中包含了特殊字符或格式不正确导致的。在本文中,我们将探讨一些常见的原因和解决方案,帮助您解决这个问题,确保表单数据正确地序列化为json。

问题内容

我正在尝试在 golang 中创建一个 web 应用程序,允许您将收据的详细信息输入到不同的表单中,然后这些表单输入被序列化为 json 对象。但是,我在序列化表单时遇到了麻烦,因为每当我尝试“提交”收据时,都会收到错误消息。

这是 main.go

package mainimport (    "encoding/json"    "html/template"    "log"    "net/http"    "strconv"    "github.com/gorilla/mux")type item struct {    shortdescription string `json:"shortdescription"`    price            string `json:"price"`}type receipt struct {    retailer     string `json:"retailer"`    purchasedate string `json:"purchasedate"`    purchasetime string `json:"purchasetime"`    items        []item `json:"items"`    total        string `json:"total"`    receiptid    int    `json:"receiptid"`}var receiptidcounter intvar receipts = make(map[int]receipt)func main() {    r := mux.newrouter()    r.handlefunc("/", homehandler).methods("get")    r.handlefunc("/submit", submithandler).methods("post")    r.handlefunc("/receipt/{id}", receipthandler).methods("get")    http.handle("/", r)    log.fatal(http.listenandserve(":8080", nil))}func homehandler(w http.responsewriter, r *http.request) {    t, err := template.parsefiles("templates/home.html")    if err != nil {        log.println(err)        http.error(w, "internal server error", http.statusinternalservererror)        return    }    err = t.execute(w, nil)    if err != nil {        log.println(err)        http.error(w, "internal server error", http.statusinternalservererror)    }}func submithandler(w http.responsewriter, r *http.request) {    decoder := json.newdecoder(r.body)    var receipt receipt    err := decoder.decode(&receipt)    if err != nil {        log.println(err)        http.error(w, "bad request", http.statusbadrequest)        return    }    receiptidcounter++    receipt.receiptid = receiptidcounter    receipts[receipt.receiptid] = receipt    jsonresponse, err := json.marshal(map[string]int{"receiptid": receipt.receiptid})    if err != nil {        log.println(err)        http.error(w, "internal server error", http.statusinternalservererror)        return    }    w.header().set("content-type", "application/json")    w.write(jsonresponse)}func receipthandler(w http.responsewriter, r *http.request) {    vars := mux.vars(r)    id, err := strconv.atoi(vars["id"])    if err != nil {        log.println(err)        http.error(w, "bad request", http.statusbadrequest)        return    }    receipt, exists := receipts[id]    if !exists {        http.notfound(w, r)        return    }    t, err := template.parsefiles("templates/receipt.html")    if err != nil {        log.println(err)        http.error(w, "internal server error", http.statusinternalservererror)        return    }    err = t.execute(w, receipt)    if err != nil {        log.println(err)        http.error(w, "internal server error", http.statusinternalservererror)    }}

登录后复制

这是我的 home.html,这是我主页的 html

    receipt input form

receipt input form

登录后复制 $(document).ready(function() { var itemcount = 1; $(‘#add-item-btn’).click(function() { itemcount++; var newitem = ‘

(0)
上一篇 2025年3月4日 21:19:15
下一篇 2025年3月1日 17:22:40

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论