【问题标题】:Can't get textarea value无法获取 textarea 值
【发布时间】:2020-06-04 19:45:27
【问题描述】:

我正在尝试使用 Go 从 HTML 表单中获取 textarea 值,但它总是返回空白/null。

HTML 表单:

<form method="POST" action="/tickets/" name="ticketForm"> 
 <textarea rows="3" cols="50" class="form-control" name="ticketDescription" id="ticketDescription" form="ticketForm" required> </textarea>
   </form>

获取表单数据的Golang方法:

inputDescription := r.PostFormValue("ticketDescription")

例如,如果我选择 ' input="text" ',它会给我价值。它只是来自带有空白/空值的文本区域。我使用“fmt.Println(inputDescription)”只是为了查看 Go 是否正在检索该值,并且它也是一个空白值。

【问题讨论】:

    标签: html forms go textarea return-value


    【解决方案1】:

    &lt;textarea&gt;form 属性必须是&lt;form&gt;id 属性,而不是name。此外,如果&lt;textarea&gt;&lt;form&gt; 内,则不需要form

    由于在您的示例中您的&lt;form&gt; 没有id 属性并且您为您的&lt;textarea&gt; 提供了form,因此在提交表单时不会发送其值。

    所以这样做:

    <form method="POST" action="/tickets/" name="ticketForm"> 
      <textarea name="ticketDescription" id="ticketDescription" required> </textarea>
    </form>
    

    或者:

    <form method="POST" action="/tickets/" id="ticketForm"> 
    </form>
    
    <textarea name="ticketDescription" id="ticketDescription"
        form="ticketForm" required> </textarea>
    

    另外不要忘记,在您的处理程序中,您必须先调用Request.ParseForm(),然后才能访问表单值(Request.Form),或者使用Request.FormValue()Request.PostFormValue()(如有必要,调用Request.Parseform())。

    【讨论】:

    • Icza,感谢您的提示,但它没有成功,我仍然收到将 ID 传递为“ticketDescription”的空白值。也许这就是我在 Go 代码中获取数据的方式(?),我相信。
    • @ViniciusMocci 你之前打过Request.ParseForm()吗?
    • 我是这样使用的:if err := r.ParseForm(); err != nil { fmt.Fprintf(w, "ParseForm() err: %v", err) return }
    • @ViniciusMocci 我已经尝试了我在答案中发布的代码,它对我有用。如果它不适合您,请发布您的所有代码 (minimal reproducible example)。
    • @ViniciusMocci 另请注意,您的浏览器可能会多次调用以获取/favicon.ico。如果这最终出现在您的表单处理程序中,那么该请求显然不会包含提交的表单。详情见Why this simple web server is called even number times?
    猜你喜欢
    • 1970-01-01
    • 2013-03-22
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    相关资源
    最近更新 更多