为什么只发送一个表单?

问题描述:

我有这两种形式,我想通过一次点击发送它们。第一种形式将图像加载到服务器中。第二个将信息加载到数据库中。出于某种原因,总是只发送“myform”。有任何想法吗?为什么只发送一个表单?

<form action="uploadpic.php" method="POST" enctype="multipart/form- data" /> 
    <input type="file" name="user_image" id="user_image" /> 
</form> 

<form method = "post" id= "myform" name="myform" action = "<?php $_PHP_SELF ?>"> 
    <table width = "400" border = "0" cellspacing = "1" cellpadding = "2"> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#add").click(function() { 

      var $form1 = $("#myform"); 

      $.post($form1.attr("action"), $form1.serialize(), function() { 
       alert('Form 1 elküldve'); 
      }); 

      $('form[name="user_image"]').each(function() { 

       var $form = $(this); 

       $.post($form.attr("action"), $form.serialize(), function() { 
        alert('Form 2 elküldve'); 
       }); 
      }) 
     }); 
    }); 
</script> 
+1

你关闭掉第二种形式?看起来不像。 –

+3

为什么你不只用一种形式来做?顺便说一句。正如弗雷德所说......你没有关闭第二个......而在我的观点中,你完全没有做过任何事情......完成无用的代码? – Twinfriends

+0

* ... preeeetty mooch。* –

你同样可以用一个表格并发送你想让他们

<form action="uploadpic.php" method="POST" enctype="multipart/form- data" /> 
    <input type="file" name="user_image" id="user_image" /> 

      <table width = "400" border = "0" cellspacing = "1" 
      cellpadding = "2"> 
//... other form details 
</form> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
    $("#add").click(function() { 
    var $form1 = $("#myform"); 
    $.post($form1.attr("action"), $form1.serialize(), function() { 
    alert('Form 1 elküldve'); 
    }); 

    $('form[name="user_image"]').each(function() { 
    var $form = $(this); 
    $.post($form.attr("action"), $form.serialize(), function() { 
     alert('Form 2 elküldve'); 
    }); 
    }) 
    }); 
    }); 
</script> 

两个数据您需要修改您的JavaScript一点。 $('input[name="user_image"]').each(function() {将迭代输入与name="user_image"并得到它的形式。 (我想这是你正在尝试的)

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#add").click(function() { 

     var $form1 = $("#myform"); 

     $.post($form1.attr("action"), $form1.serialize(), function() { 
      alert('Form 1 elküldve'); 
     }); 

     $('input[name="user_image"]').each(function() { 

      var $form = $(this).parent('form'); 

      $.post($form.attr("action"), $form.serialize(), function() { 
       alert('Form 2 elküldve'); 
      }); 
     }) 
    }); 
}); 
</script> 

如果你有name="user_image"只有一个输入元素,那么这是比较合适的:

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#add").click(function() { 

     var $form1 = $("#myform"); 

     $.post($form1.attr("action"), $form1.serialize(), function() { 
      alert('Form 1 elküldve'); 
     }); 

     var $form = $('input[name="user_image"]').parent('form'); 

     $.post($form.attr("action"), $form.serialize(), function() { 
      alert('Form 2 elküldve'); 
     }); 
    }); 
}); 
</script>