首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >避免通过Javascript多次提交表单

避免通过Javascript多次提交表单
EN

Stack Overflow用户
提问于 2014-02-26 04:26:26
回答 3查看 157关注 0票数 0

让我明确标题的含义:在我的代码中,为了验证一个依赖于字段"t1“的字段,我需要自动提交表单一次(只有一次)。但是我下面的代码提交了无数次,我知道为什么会发生这种情况。我猜原因是每次表单提交时,标题中的JS都会运行。请帮我避免这种情况。以下是我的代码:

代码语言:javascript
运行
AI代码解释
复制
<html>
<head>
<script>
window.onload = function()
{   
    var f = document.getElementById("CheckForm");
    var temp = document.getElementById("CheckForm.t1");
    if(f.name == "CheckForm")
    {
      var temp1 = document.getElementById("t1");
      temp1.value = "Task";
    }
      document.CheckForm.submit();
}
</script>
</head>
<body>
      <form name="CheckForm" id="CheckForm" method="Post">
    <input type="text" id="t1" name="t1"/>
</form>
</body>
</html>

我尝试使用像标志这样的变量和像arguments.callee.count = ++arguments.callee.count || 1这样的静态变量来阻止它,并将我的CheckForm.submit()行放在if子句中。但都不管用。任何建议或帮助都是值得欣赏的。

EN

回答 3

Stack Overflow用户

发布于 2014-02-26 04:34:57

代码语言:javascript
运行
AI代码解释
复制
<html>
<head>
<script>
window.onload = function()
{   
    var f = document.getElementById("t1");
    var temp = document.getElementById("CheckForm.t1");
    if(f.name == "CheckForm")
    {
      var temp1 = document.getElementById("CheckForm.t1");
      temp1.value = "Task";
    }
      if(window.location.search=="")document.CheckForm.submit();
}
</script>
</head>
<body>
      <form name="CheckForm">
              <input type="text" id="t1"/>
      </form>
</body>
</html>
票数 1
EN

Stack Overflow用户

发布于 2014-02-26 04:38:05

您的表单肯定比以下内容更复杂:

代码语言:javascript
运行
AI代码解释
复制
  <form name="CheckForm">
          <input type="text" id="t1">
  </form>

这将不会向服务器提交任何内容,因为没有成功的控件(唯一的控件没有名称)。

由于表单只是提交到同一页,因此可以提交一个隐藏值,如下所示:

代码语言:javascript
运行
AI代码解释
复制
  <form name="CheckForm">
          <input type="text" id="t1">
          <input type="hidden" name="hasBeenSubmitted" value="yes">
  </form>

现在,当表单提交时,新页面的URL将包含...?hasBeenSubmitted=yes,这样您就可以在URL中查找该值,例如

代码语言:javascript
运行
AI代码解释
复制
if (/hasBeenSubmitted=yes/.test(window.location.search)) {
    // this page loaded because the form was submitted
}

如果存在,请不要再次提交该表单。

票数 1
EN

Stack Overflow用户

发布于 2014-03-02 20:30:45

因此,既然你使用的是post方法,最简单的方法就是提交一个新的url,然而,你似乎决定将表单提交给同一个url,在这种情况下,你使用的是php (或任何其他语言),你可以检查http请求是否有一个值为t1的post属性。

代码语言:javascript
运行
AI代码解释
复制
<?php 

if(isset($_POST['t1']){
        $your_text=$_POST['t1'];
        /*do some string checking to make safe and the throw into your database or mdo whatever you please with data
        if you wanted to include the ip address of the user you can get a basic and most likely client ip address like so

        $ip_address= $_SERVER['REMOTE_ADDR'];

        if you are handing a mulitpage form look into php session or similar tech ... cookies is kind of over kill for this scenario

         then include a succes page as the form has been submitted
         or you could end php with this tag ?> and then have your html and start again with <?
        */

        include 'form_submitted.php';

}else{
    //this would be the html page that you included in your question and can be handle in same ways as form submitted 
    include 'my_form.php'
}
?>

Ip地址可能不是最好的,因为它会阻止两个用户填写表格,如果他们在同一个LAN中,例如。两个人在同一个办公室或同一个房子里(如果你的页面在万维网上是有效的)。我会看看@RobG answer,因为他基本上是在用get而不是post ANyways来建议相同类型的事情,希望这会有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22031735

复制
相关文章
在AWS中建立网络分割案例
网络分割最简单的示例是使用防火墙分离应用程序和基础结构组件。这个概念现在是构建数据中心和应用程序架构中提出的。但如果没有合适的网络分割模型,几乎不可能找到企业案例。
FB客服
2019/10/15
1.6K0
ssm实现发送邮箱功能
参考:ssm整合JavaMail发送邮件_ssm整合mimemessage_ds_surk的博客-CSDN博客
chao超的搬运文章
2023/10/15
2740
ssm实现发送邮箱功能
jsp中在href中传递参数
<% Configuration conf = new Configuration(); URI uri = new URI("hdfs://192.168.0.52:9010"); FileSystem fileSystem = FileSystem.get(uri, conf); //System.out.println("Hdfs directory is"+"\n"); Path src1 = new Path("hdfs://192.168.0.52:9
闵开慧
2018/03/30
4.8K0
在函数中的局部程序(像是比局部变量还局部的部分)
我们都知道局部变量是在一个函数内部定义的变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。在一个函数内部定义的变量只在本函数范围内有效,也就是只有本函数内才能引用它们,在此函数外不能使用这些变量。在复合语句内定义的变量只能在本复合语句范围内有效,只有本复合语句内才能引用他们,在该复合语句外不能使用这些变量。还有就是函数的形参,只在该函数内有效。而全局变量的有效范围为从定义变量的位置开始到本源文件结束。 但还有一种形式的局部变量不是以函数为限制,而是以
跋扈洋
2021/02/02
1.1K0
在函数中的局部程序(像是比局部变量还局部的部分)
在SSM框架中配置定时任务
在项目中需要添加一个定时任务,完成每天晚上访问第三方接口用于同步数据,在实际中这样的定时任务需求很多,比如系统日志,备份等等,特在网上找了相关内容。 此处使用的是SSM框架,SpringMVC的配置文件都在springmvc.xml中。 1. 在springmvc.xml添加如下内容 在xmlns中添加
geekfly
2022/05/06
1.1K0
activeMQ 在ssm中的使用-版本 5.14.4
        <!-- activemq配置开始 -->         <dependency>             <groupId>org.eclipse.jetty</groupId>             <artifactId>jetty-continuation</artifactId>             <version>${jetty.version}</version>         </dependency>         <!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-all -->         <dependency>             <groupId>org.apache.activemq</groupId>             <artifactId>activemq-all</artifactId>             <version>${activemq.version}</version>         </dependency>         <!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-broker -->         <dependency>             <groupId>org.apache.activemq</groupId>             <artifactId>activemq-broker</artifactId>             <version>${activemq.version}</version>         </dependency>         <!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-client -->         <dependency>             <groupId>org.apache.activemq</groupId>             <artifactId>activemq-client</artifactId>             <version>${activemq.version}</version>         </dependency>         <!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-web -->         <dependency>             <groupId>org.apache.activemq</groupId>             <artifactId>activemq-web</artifactId>             <version>${activemq.version}</version>         </dependency>         <!--geronimo.specs-->         <!-- https://mvnrepository.com/artifact/org.apache.geronimo.specs/geronimo-j2ee-management_1.1_spec -->         <dependency>             <groupId>org.apache.geronimo.specs</groupId>             <artifactId>geronimo-j2ee-management_1.1_spec</artifactId>             <version>${geronimo.specs.version}</version>         </dependency>         <!-- https://mvnrepository.com/artifact/org.apache.geronimo.specs/geronimo-jms_1.1_spec -->         <dependency>             <groupId>org.apache.geronimo.specs</groupId>             <artifactId>geronimo-jms_1.1_spec</artifactId>             <version>${geronimo.specs
爱明依
2019/03/12
1.1K0
aws在java中使用
一 AWS DynamoDb在java中的使用【建立连接】 accessKey = “xxxxxxx”; secretKey = “xxxxxxxx” if (StringUtils.isNotBlank(accessKey) && StringUtils.isNotBlank(secretKey)) { logger.debug("accessKey和secretKey有值,不是写在系统配置里的方式"); bac = new BasicAWSCredentials(accessKey, se
零式的天空
2022/03/21
2.4K0
【说站】python在函数中传递实参
若要使函数接受不同类型的实参,则必须将接受任意数量实参的形参放在函数定义的最后。首先,Python匹配位置实参和关键词实参,然后将剩余的实参收集到最后一个形参中。
很酷的站长
2022/11/23
1.6K0
【说站】python在函数中传递实参
基于SSM的 spring 发送邮件的实现
由于考虑到项目中需要,如果程序出现异常或其它问题,可以发送邮件来及时提醒后台维护人员处理。所以目前考虑使用JavaMail来实现邮件发送!如下,是我整理的一些内容,做个笔记记录下:(当然,在这功能实现之前,需要搭建好ssm的基本框架!)
AI码真香
2022/09/13
4930
基于SSM的 spring 发送邮件的实现
在 Vue 中,父组件中传递数据给子组件
在父组件中传递数据给子组件。在 Vue 中,可以通过 props 属性来实现父组件向子组件传递数据的功能。
王小婷
2023/09/11
3850
PHP在函数体中传递与接收参数
默认情况下,PHP是按值传递参数的。值传递参数调用函数时将常量或变量的值(通常称其为实参)传递给函数的参数(通常称为形参)。值传递的特点是实参与行参分别存储在内存中,是两个不相关的独立变量。因此,在函数内部改变形参的值时,实参的值一般是不会改变的。
用户7657330
2020/08/14
2.8K0
非局部静态数据在多编译单元中的窘境
而编译单元指的就是*.o文件,假如一个工程是由n个单独的cpp和对应的头文件,那么就会被事先编译生成n个*.o文件,有时候我们将这些*.o文件称为目标文件,它们作为生成最后的统一可执行文件,也被称为编译单元。
用户2617681
2019/08/08
8020
用AWS、Slack和树莓派构建物联网原型项目
IoT-AWS-Slack-and-a-Raspberry-Pi-1-1068x656-1.jpg
用户4122690
2020/06/08
2.8K0
用AWS、Slack和树莓派构建物联网原型项目
在AWS云上的SAP
虽然最近亚马逊在迁离Oracle的数据库,使用Aurora PostgreSQL导致Prime Day促销日出现故障,但这似乎并不影响Amazon Aurora 数据库的推进,并且亚马逊一直在说Amazon Aurora兼容MySQL和PostgreSQL,是一种将数据库迁移到云的优秀工具。可见其要脱离Oracle的决心。而SAP也做出了同样的事情,在以前的SAP ERP系统里,SAP一直使用着别人的数据库,比如Oracle,后来SAP推出了HANA内存数据库,在S/4 HANA系列版本中,成功的使用了自己研发的数据库。可以看出这两家企业都想离开Oracle,所以合作是必然的事。
matinal
2019/01/04
2.3K0
在AWS云上的SAP
【翻译】研究表明--保护公共AWS SSM文件的必要性
AWS系统管理器通过创建SSM文档在AWS资源上自动执行操作任务。以JSON或YAML创建的SSM文档包含AWS系统管理器将在云资产上执行的操作。默认情况下,SSM文档是私有的,但可以配置为与其他AWS账户共享或公开共享。AWS提供了共享SSM文档的最佳实践。
BinGo_Blog
2022/11/01
5010
kubernetes 实用技巧: 在 SHELL 中传递信号
在 Kubernetes 中,Pod 停止时 kubelet 会先给容器中的主进程发 SIGTERM 信号来通知进程进行 shutdown 以实现优雅停止,如果超时进程还未完全停止则会使用 SIGKILL 来强行终止。
CNCF
2021/05/27
2.2K0
Flask-在Flask中跨请求传递数据资源
利用 Flask的底层Werkzeug是有缓存支持的,不用使用redis等第三方。
用户1558882
2018/10/25
1.3K0
java中的参数传递-值传递、引用传递
参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递。
chenchenchen
2022/11/29
4.8K0
java中的参数传递-值传递、引用传递
kubernetes 实用技巧: 在 SHELL 中传递信号
在 Kubernetes 中,Pod 停止时 kubelet 会先给容器中的主进程发 SIGTERM 信号来通知进程进行 shutdown 以实现优雅停止,如果超时进程还未完全停止则会使用 SIGKILL 来强行终止。
imroc
2021/05/18
2.8K0
在React中如何使用history.push传递参数
第一种和第三种,在目标路由刷新后,参数还可以取到,但是第二种页面刷新后,参数就取不到了,第二种适合开发winform类的应用。
挥刀北上
2021/12/19
21.6K0
在React中如何使用history.push传递参数

相似问题

在aws CLI中通过AWS ssm开始会话传递命令

11

AWS ssm发送命令:修改CLI中的超时

130

AWS SSM发送命令:参数参数未通过

130

在AWS SSM中检索命令调用

20

不使用特殊字符的aws ssm发送命令

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档