Javascript 为什么不是';t网站收到POST请求?
我一直在尝试创建“重新加载”按钮,一旦单击该按钮,并提交javascript表单支持:Javascript 为什么不是';t网站收到POST请求?,javascript,python,html,django,Javascript,Python,Html,Django,我一直在尝试创建“重新加载”按钮,一旦单击该按钮,并提交javascript表单支持: <div style="float: left;width:100%;height: 8%;background-color: #333333;min-height: 60px;"> <form id="rel_inv" name="reload_inventory" action="/account/" method="post"> {% csrf_token %}
<div style="float: left;width:100%;height: 8%;background-color: #333333;min-height: 60px;">
<form id="rel_inv" name="reload_inventory" action="/account/" method="post">
{% csrf_token %}
<input type="submit" name="reloadinv" value="inventory_reload" style="display: none;"></input>
<div onclick="javascript:document.getElementById('rel_inv').submit();" name="reload_inv" style="width: 60px;height: 60px;cursor: pointer;text-decoration:none;display: block;"><img src="/static/Home/images/reload_i.png" style="width: 30px;height: 30px;margin-top: 25%;margin-left: 25%;"></div>
</div>
reload_库存变量通过上下文发送到模板。为了检查发送POST请求后变量是否被更改,我在
-
alert("{{ reload_inventory }}")
脚本总是警告“false”,并且在提交表单时从不发布request.method
最终目标是使用
{{reload\u inventory}}
变量来获取用户是否请求重新加载库存。如果{{reload\u inventory}}
为“true”
,将调用inventory函数,用户的库存将自动打开
更简单地说,一旦用户单击“重新加载”按钮,页面将重新加载新变量reload\u inventory
。如果reload\u inventory
为“true”,则将通过javascript打开inventory菜单,否则,反之亦然
那么问题出在哪里呢?即使提交表单,request.method也不等于POST,这背后有什么原因吗?有没有更好的办法?我的代码有问题吗?提前感谢。问题在于这一行:
if request.POST.get("reload_inv"):
POST
字典不包含这样的值。您可以在打印(“已收到请求”)
之后放置打印(request.POST)
,然后将其签出
相反,所有的POST
键值对都用表单数据(而不是javasccript数据)填充。reload\u inv
变量是div
(…
)的名称,实际上它不是有效的HTML
为了工作,将if request.POST.get(“reload_inv”):更改为:
if request.POST.get("reloadinv"):
这是您的输入的名称(
)
[编辑]:此外,当您使用另一个元素(div
)提交表单时,没有必要使用
。相反,将此输入更改为:
<input type="submit" name="reloadinv" value="inventory_reload" style="display: none;"></input>
致:
我在本地进行了测试,效果很好。问题在于这一行:
if request.POST.get("reload_inv"):
POST
字典不包含这样的值。您可以在打印(“已收到请求”)
之后放置打印(request.POST)
,然后将其签出
相反,所有的POST
键值对都用表单数据(而不是javasccript数据)填充。reload\u inv
变量是div
(…
)的名称,实际上它不是有效的HTML
为了工作,将if request.POST.get(“reload_inv”):
更改为:
if request.POST.get("reloadinv"):
这是您的输入的名称(
)
[编辑]:此外,当您使用另一个元素(div
)提交表单时,没有必要使用
。相反,将此输入更改为:
<input type="submit" name="reloadinv" value="inventory_reload" style="display: none;"></input>
致:
我在本地进行了测试,效果非常好。该div中的代码看起来非常古怪。此外,它应该在JavaScript文件中,以便可以正确编辑和使用。@AluanHaddad即使没有div,提交输入本身也会给出相同的结果。该div中的代码看起来非常古怪。此外,它应该位于JavaScript文件中,以便可以正确编辑和使用。@AluanHaddad即使没有div,提交输入本身也会给出相同的结果。非常感谢您的回答。我试过了,但仍然没有收到任何请求。由于某些原因,request.method不等于“POST”。这可能是某种错误吗?更新了我的答案。请求背后的原因不是POST
是另一个问题。我在本地复制粘贴了您的代码,效果非常好(在我的回答中出现了两个更改:if request.POST.get(“reloadinv”):
和
),非常感谢<代码>
由于某些原因,似乎可以完美地工作。非常感谢您的回答。我试过了,但仍然没有收到任何请求。由于某些原因,request.method不等于“POST”。这可能是某种错误吗?更新了我的答案。请求背后的原因不是POST
是另一个问题。我在本地复制粘贴了您的代码,效果非常好(在我的回答中出现了两个更改:if request.POST.get(“reloadinv”):
和
),非常感谢<代码>由于某些原因似乎工作得很好。