首页 > 解决方案 > 需要用javascript多次提交表单

问题描述

正如标题所说,我需要多次提交表单,表单的操作是一个外部 php 文件。表单提交一次,但我需要它在每个循环中提交一次。

   function send_sms(){
    var receivers = document.getElementById('receivers').value.toString();
    var receivers_array = receivers.split(',');
    for(var i = 0; i < receivers_array.length; i++) {
        // Trim the excess whitespace.
        receivers_array[i] = receivers_array[i].replace(/^\s*/, "").replace(/\s*$/, "");
        document.getElementById('receiver').value = receivers_array[i];
        document.getElementById("smsForm").submit();


    }
} 

代码基本上应该做的是拆分用户输入的电话号码并向每个号码发送短信。它提交并将文本发送到数组中的第一个数字,而不是其他输入的数字。拆分并且一切正常(我在所有内容上都使用了 console.log 来检查)。循环也不会中断,因为它在将每个接收器值分配到循环内部后控制台记录了每个接收器值。

更新:让它像这样工作

  function send_sms(){
    var receivers = document.getElementById('receivers').value.toString();
    console.log(receivers);
    var receivers_array = receivers.split(',');
    console.log(receivers_array[0]);
    for(var i = 0; i < receivers_array.length; i++) {
        // Trim the excess whitespace.
        receivers_array[i] = receivers_array[i].replace(/^\s*/, "").replace(/\s*$/, "");
        document.getElementById('receiver').value = receivers_array[i];
        console.log(document.getElementById('receiver').value);
        //document.getElementById("smsForm").submit();
        $.ajax({
            url:'../API/sendsms.php',
            type:'post',
            data:$('#smsForm').serialize(),
            success:function(){
                alert("worked");
            }
        });


    }
}    

标签: javascriptphpforms

解决方案


提交触发页面重新加载/重定向到您的操作。您必须为表单提交添加 ajax 侦听器,这样它就不会在每次提交触发时刷新页面。

$(document).on('submit', 'form#smsForm', function() {
  $.ajax({
    url: $(this).attr('action'),
    type: $(this).attr('method'),
    dataType: 'json',
    data: $(this).serialize(),
    success: function(data) {
      console.log('Submitted');
    },
    error: function(xhr, err) {
      console.log('Error');
    }
  });
  return false;
});

function send_sms() {
  var receivers = document.getElementById('receivers').value.toString();
  var receivers_array = receivers.split(',');
  for (var i = 0; i < receivers_array.length; i++) {
    // Trim the excess whitespace.
    receivers_array[i] = receivers_array[i].replace(/^\s*/, "").replace(/\s*$/, "");
    document.getElementById('receiver').value = receivers_array[i];
    document.getElementById("smsForm").submit();


  }
}


推荐阅读