Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果以前的提交仍然有效,如何拒绝HTML表单提交?_Javascript_Jquery_Html_Security_Form Submit - Fatal编程技术网

Javascript 如果以前的提交仍然有效,如何拒绝HTML表单提交?

Javascript 如果以前的提交仍然有效,如何拒绝HTML表单提交?,javascript,jquery,html,security,form-submit,Javascript,Jquery,Html,Security,Form Submit,所以我有一个表单,它使用AJAX执行一个相当长的数据发布,现在我有点偏执,认为一些聪明的家伙可能会打开firebug并重新触发发布过程,而之前的表单仍然在运行。我如何避免这种情况 谢谢 您可以: 禁用提交按钮 防止回车键按下 从表单标记中删除action属性 在第一次提交时重定向到另一个页面,并使带有表单的页面过期 话虽如此,你在前端只能做这么多事情来防止再次提交——总有办法的。如果您非常关心这一点,那么服务器端验证也是必要的(通常还是推荐的)。您可以: 禁用提交按钮 防止回车键按下 从表

所以我有一个表单,它使用AJAX执行一个相当长的数据发布,现在我有点偏执,认为一些聪明的家伙可能会打开firebug并重新触发发布过程,而之前的表单仍然在运行。我如何避免这种情况

谢谢

您可以:

  • 禁用提交按钮
  • 防止回车键按下
  • 从表单标记中删除
    action
    属性
  • 在第一次提交时重定向到另一个页面,并使带有表单的页面过期
话虽如此,你在前端只能做这么多事情来防止再次提交——总有办法的。如果您非常关心这一点,那么服务器端验证也是必要的(通常还是推荐的)。

您可以:

  • 禁用提交按钮
  • 防止回车键按下
  • 从表单标记中删除
    action
    属性
  • 在第一次提交时重定向到另一个页面,并使带有表单的页面过期

话虽如此,你在前端只能做这么多事情来防止再次提交——总有办法的。如果您非常关心这一点,那么服务器端验证也是必要的(通常还是推荐的)。

在提交表单时设置一个条件,并在表单提交时添加一个检查。jQuery中的示例:

$('form').submit(function(e) { 

    // If form has been submitted
    if($(this).data('submitted') == true) {
        e.preventDefault();
        return;
    }

    // Set the condition
    $(this).data('submitted',true);

    //...

    //After form has been submitted successfully, release the condition
    $(this).data('submitted',false);
});

这比禁用表单的某些部分更可取,因为表单中的任何输入都可以进行提交。

在提交表单时设置条件,并在表单提交时添加检查。jQuery中的示例:

$('form').submit(function(e) { 

    // If form has been submitted
    if($(this).data('submitted') == true) {
        e.preventDefault();
        return;
    }

    // Set the condition
    $(this).data('submitted',true);

    //...

    //After form has been submitted successfully, release the condition
    $(this).data('submitted',false);
});

这比禁用表单的某些部分更可取,因为表单中的任何输入都可能导致提交。

首先,考虑到您担心由于绕过客户端控制(即使用Firebug或Fiddler重新发出请求)而导致多次提交,您可以忽略在客户端应用控件的任何选项(即禁用按钮、JS提交状态检查等)。这是您必须在服务器上处理的问题


看一看这张照片。这通常用于帮助防止CSRF(就像链接中的上下文一样),但也用于避免多个表单提交。如果您可以在AJAX请求中传递一个令牌,该令牌经过验证,然后在请求开始处理后(显然是在繁重的工作开始之前)失效,您已经有了一种防止多次提交的方法。

第一件事是,如果您担心由于绕过客户端控制(即使用Firebug或Fiddler重新发出请求)而导致多次提交,那么您可以忘记在客户端应用控制的任何选项(即禁用按钮、JS检查提交状态等)。这是您必须在服务器上处理的问题


查看。这通常用于帮助防止CSRF(正如链接中的上下文一样),但也用于避免多个表单提交。如果您可以在AJAX请求中传递一个令牌,该令牌经过验证,然后在请求开始处理后失效(显然是在繁重的工作开始之前),您已经有了一种防止多次提交的方法。

…请注意,前三件事将涉及您在“提交”中要做的事情表单的处理函数。但我可以从Firebug中启用submit按钮,与Enter键相同,操作…+我无法重定向到另一个页面…前端只能做这么多事情-总是有办法的。如果您非常关心这一点,那么服务器端验证也是必要的(通常还是推荐的)请注意,前三件事将涉及你在“提交”中要做的事情表单的处理函数。但我可以从Firebug中启用submit按钮,与Enter键相同,操作…+我无法重定向到另一个页面…前端只能做这么多事情-总是有办法的。如果您非常关心这一点,那么服务器端验证也是必要的(通常还是推荐的)。您可能还想考虑如何加快服务器端操作,可能是通过将工作委派给另一个线程以异步方式完成,这样您就可以快速将某些内容返回到客户端。人们不喜欢无助地等待。您可能还想想想办法加快服务器端操作,可能是通过委派ting工作到另一个线程以异步方式完成,因此您可以快速将某些内容返回到客户端。人们不喜欢无助地等待。