Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.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
如何防止使用serialize的PHP/Ajax脚本多次提交?_Php_Ajax - Fatal编程技术网

如何防止使用serialize的PHP/Ajax脚本多次提交?

如何防止使用serialize的PHP/Ajax脚本多次提交?,php,ajax,Php,Ajax,我正在使用PHP/Ajax/serialize向自己提交一个简单的表单。我使用以下JavaScript将其设置为序列化/发布数据。您可以在上看到演示。有一个指向该脚本的.txt版本的链接 $(function() { var form = $("#addtocart"); $(form).submit(function(e) { e.preventDefault(); var formData = $(form).serialize(); $("#result")

我正在使用PHP/Ajax/serialize向自己提交一个简单的表单。我使用以下JavaScript将其设置为序列化/发布数据。您可以在上看到演示。有一个指向该脚本的.txt版本的链接

$(function() {
  var form = $("#addtocart");
  $(form).submit(function(e) {
    e.preventDefault();
    var formData = $(form).serialize();
    $("#result").html( "" );
    $.ajax({
      type: "POST",
      url: $(form).attr("action"),
      data: formData,
      success: function(html) { $("#result").html(html); }
    })
  });
});

单击“立即购买”按钮后,它应该只向数据库添加一行。第一次单击按钮时,它会添加一行。如果再次单击,则会添加两行新行,然后添加三行新行,以此类推。如果单击“提交”,则会依次添加更多行。要停止此操作,必须重新加载表单。

将按钮的id放入
id=“addtocart\u id”


仅供参考,
表单
已经是jQuery对象。您不需要一直将其包装在
$(表单)
您可以禁用buy按钮,直到ajax过程完成。您的HTML结构是什么样的?您的
#addtocart
表单是否包含
#result
元素?AJAX响应中返回的HTML是什么?您似乎在AJAX响应中返回一个完整的HTML文档,其中包含向表单中添加更多提交事件处理程序的脚本。不要这样做,只需使用您想要插入到
#结果中的HTML代码片段进行响应
我按照您的建议重新组织了文档,它似乎可以正常工作。Thx作为解决方案我很好。我没有尝试Rajkumar提供的答案,但是thx。
$(function() {
  var form = $("#addtocart");
  var count_btn = true;
  form.submit(function(e) {
    e.preventDefault();
    if(count_btn){
      var formData = form.serialize();
      $("#result").html("");
      $.ajax({
        type: "POST",
        url: form.attr("action"),
        data: formData,
        beforeSend: function () {
          $("#addtocart_id").html("Please Wait...").prop("disabled", true);
        },
        success: function(html) { $("#result").html(html); }
        complete: function(){
                  count_btn = false;
                  $("#addtocart_id").html("Now Reload from browser");
        }
      })
    }
  });
});