【问题标题】:submitting a django form using javascript使用 javascript 提交 django 表单
【发布时间】:2011-09-01 01:56:37
【问题描述】:

好的,所以有这个sn-p的代码 -

    <form id="myform" name="myform" action="." method="post">
        <a href="javascript: document.forms['myform'].submit();" name="myform">Submit
        </a>
    </form>    

我正在使用 href 和一些 javascript 向我的 django 服务器提交表单。 在服务器上,我使用以下代码检查发布请求 -

    if 'myform' in request.POST:
        '''handle the form submition'''
        return True
    return False

这返回错误。任何想法为什么?

【问题讨论】:

  • 这个表格有输入栏吗?您应该检查它而不是表单的名称。
  • 检查表单中的输入字段是什么意思?可以加个例子吗?
  • 比如,正在提交的实际数据......表单本身什么都不是,那么发布的是什么数据?即名为 someData 的文本输入字段。 if 'someData' in request.POST:
  • 天啊!非常感谢!在表单中添加一个输入字段就可以了!
  • 我已将我的 cmets 移至答案,以便您接受。

标签: javascript python html forms djangoappengine


【解决方案1】:

这是我用来解决问题的解决方案 - (非常感谢 fosco 和 adam!)

    <form id="my_form" action="." method="post">
        <a href="#" onclick="document.forms['my_form'].submit();">Call Form</a>
        <input type="checkbox" name="call_form" checked style="visibility:hidden"><br>
        <input type="submit" value="create form" style="visibility:hidden" />
    </form>`

【讨论】:

  • 这看起来很聪明,而且效果很好。这种方法有什么“错误”吗?
【解决方案2】:

此表单中是否有任何输入字段?您应该检查它而不是表单的名称。表单本身什么都不是,那么发布的是什么数据?即名为 someData 的文本输入字段。 if 'someData' in request.POST:

【讨论】:

    【解决方案3】:

    我假设“使用 href”意味着您以编程方式单击链接?链接总是发送 GET 请求,这就是它失败的原因。您可以使用 document.forms.myform.submit(); 使用 JS 提交整个表单,然后使用 POST 发送它,因为这是您在表单中指定的方法。

    【讨论】:

    • 请注意,myform 理想情况下应该是表单的 id,而不是名称(虽然两者都可以,但使用 id 会更好,因为表单不应该有名称)。
    • 感谢您的快速回复!单击href“按钮”后,将向服务器发送一个发布请求,但该帖子发送时没有任何数据,因此我们的检查仍然失败。我们在页面中有多个提交按钮,因此我们必须将表单的名称发送到我们的服务器以区分表单。但是只使用 id 也可以,所以谢谢:) 还有其他想法吗?
    • 按钮在表单内吗?至于这种情况下的表单名称,您可以将其替换为隐藏的输入。
    猜你喜欢
    • 2017-05-13
    • 1970-01-01
    • 2016-06-22
    • 2019-12-17
    • 2016-01-04
    • 2014-01-04
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多