如何防止从多个提交使用序列化的PHP / Ajax脚本?

时间:2019-07-10 00:55:14

标签: php ajax

我正在使用PHP / Ajax / serialize向自身提交一个简单的表单。我使用以下JavaScript对其进行设置以序列化/发布数据。您可以在https://www.dottedi.biz/demo/code/public/addtocart.php上查看演示。有一个指向脚本的.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); }
    })
  });
});

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

1 个答案:

答案 0 :(得分:-1)

将按钮的ID放入id = "addtocart_id"

$(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");
        }
      })
    }
  });
});