Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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通过单击一个按钮逐个提交所有表单_Javascript_Php - Fatal编程技术网

Javascript通过单击一个按钮逐个提交所有表单

Javascript通过单击一个按钮逐个提交所有表单,javascript,php,Javascript,Php,我正试图提交多个表格,分别与一个按钮点击一个。我使用SQL变量$name和id=“form”填充输入表单,具体取决于创建id form1、form2等的结果。然后,我需要单击一下发送所有这些表单。但是彼此独立,所以首先是id为form1的表单,而不是form2等 这个问题。我现在的方式只是提交其中一个表单,即生成的最后一个表单。我做错了什么?控制台没有给出任何错误,所有表格都使用正确的ID生成(表格1、表格2、表格3等) PS:我不能用AJAXXMLRequest来解决这个问题 $type =

我正试图提交多个表格,分别与一个按钮点击一个。我使用SQL变量
$name
id=“form”
填充输入表单,具体取决于创建id form1、form2等的结果。然后,我需要单击一下发送所有这些表单。但是彼此独立,所以首先是id为form1的表单,而不是form2等

这个问题。我现在的方式只是提交其中一个表单,即生成的最后一个表单。我做错了什么?控制台没有给出任何错误,所有表格都使用正确的ID生成(表格1、表格2、表格3等)

PS:我不能用AJAXXMLRequest来解决这个问题

$type = "test"
    $i=0;
        $stmt = $mysqli->prepare("SELECT name FROM account WHERE purpose = ? ");
        $stmt->bind_param('s',$type);
        $stmt->execute();
        $result = $stmt->get_result(); //only works when nd_mysli is set on the server!
    
        while ($rowid = $result->fetch_assoc())
    {
         $name = $rowid['name'];
         
    $i++     
    
    
    ?>  <form method="post" id="form<?= $i ?>" target="_external" action="https://www.externalwebsite.com/index/post.php">    
        <input type="hidden" value="<?= $name ?>"  name="sendname" >
        </form>
    
       <?PHP } ?>
       <button id="submit">Submit</button>
       <script>
    
    document.getElementById( 'submit' ).addEventListener( 'click', function () {
        // check for and report errors here
        for( var index = 0; index < document.forms.length; index++ ) {
            document.forms[index].submit();
        };
    } );
    
    </script>
$type=“测试”
$i=0;
$stmt=$mysqli->prepare(“从帐户中选择名称,其中目的=?”;
$stmt->bind_参数('s',$type);
$stmt->execute();
$result=$stmt->get_result()//只有在服务器上设置了nd_mysli时才有效!
而($rowid=$result->fetch_assoc())
{
$name=$rowid['name'];
$i++

?>您的问题?提交表单(不使用AJAX/fetch)就像单击超链接。它卸载当前页面并移动到新页面。因此,未提交的表单将消失

您可以通过创建超链接来实现这一点,该超链接包含您希望发送到服务器的字段(编码为url参数)以及锚定标记中的
target=“blank”
。当然,这些将显示为服务器上的GET操作


但是你最好的办法是找出解决这个问题的另一种方法。

如果你不/不能使用AJAX…
您可以在iframe中加载所有表单。当每个表单提交时,iframe可能会重新加载或执行formAction要求的任何操作,但您的用户主窗口将保持原样



否则,浏览器将按照表单
操作
刷新/浏览页面。

如果您确实能够使用AJAX,一个基本示例是:

var i = 0;
$('form').each(function() {
   var url = $(this).attr('action');

   $.ajax({
      url: url,
      method: 'POST',
      data: $(this).serialize(),
      beforeSend: function () {
          i++;

          console.log('Submitting form #' + i);
      },
      success: function(response) {
          console.log('Done', response);
          $(this).trigger('reset'); // clear all fields in this form
      }
   });
});

为什么不使用一个包含多个元素的
表单呢?您可以在名称
name=“sendname[]上使用数组表示法
然后对其进行迭代,或者将
$id
放在其中。如果需要单独提交非Xmlrequest,那么远程站点的不灵活性会让您束手无策。我想您需要强制用户通过渐进式单张表单。也许可以通过会话保留他们的进度?如果我理解正确的话。我使用javascript单独提交表单是不可能的?如果你读到这样一个问题:“PS:我不能使用ajax Xmlrequest解决这个问题。”如果你读到答案:“如果你真的能够使用ajax”,你能想出一个逻辑上的原因吗?如果他非常非正统的尝试是这样的话,ajax是不可能的?提醒我:“我不耐乳糖”-“如果你想试试酸奶,我知道一家很棒的商店!";):b比推荐iframes更好…如果解决方案是:使用iframes,那么可能是XY问题。我想我同意@O.Jones——完全找到另一种方法。还有什么其他方法可能?表单和提交按钮也可以一起显示。我有10个。当我逐个单击它们时,没有问题。不是吗e是否有一个重新创建单击或表单提交的解决方案?