我的HTML文件中有这个PHP代码。我需要使用这些表单更新数据库表。
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo '<img class="plan1" id="'.$row["imageID"].'" style="position:absolute; top:'.$row["top"].'px; left:'.$row["left"].'px;" src="'.$row["url"].'" width="'.$row["width"].'" height="'.$row["height"].'" />';
echo '<form action="saveimage3.php" method="post" id="form1">';
echo '<input type="hidden" name="planid" value="'.$row["planID"].'"/>';
echo '<input type="hidden" name="version" value="1'.$row["version"].'"/>';
echo '<input type="hidden" name="imageid" value="'.$row["imageID"].'"/>';
echo '<input type="hidden" name="url" value="'.$row["url"].'"/>';
echo '<input type="hidden" name="left" id="l'.$row["imageID"].'" value="'.$row["left"].'"/>';
echo '<input type="hidden" name="top" id="t'.$row["imageID"].'" value="'.$row["top"].'"/>';
echo '<input type="hidden" name="width" id="w'.$row["imageID"].'" value="'.$row["width"].'"/>';
echo '<input type="hidden" name="height" id="h'.$row["imageID"].'" value="'.$row["height"].'"/>';
echo '</form>';
}
}
这将根据来自数据库的数据创建多个表单。
我有这个ajax代码将所有表单提交到php文件
<script>
function validate(form){
//get form id
var formID = form.id;
var formDetails = $('#'+formID);
$.ajax({
type: "POST",
url: 'saveimage3.php',
data: formDetails.serialize(),
success: function (data) {
// log result
console.log(data);
//for closing popup
location.reload();
window.close()
},
error: function(jqXHR, text, error){
// Displaying if there are any errors
console.log(error);
}
});
return false;
}
//this function will create loop for all forms in page
function submitAll(){
for(var i=0, n=document.forms.length; i<n; i++){
validate(document.forms[i]);
}
}
</script>
我有这个按钮
<button onclick="submitAll()">Save Version</button>
通过提交这些,数据库仅更新第一个表单数据。其他表单不会将数据发送到php文件。如何将所有表单都放入php文件???
答案 0 :(得分:2)
也许是因为location.reload();你从第一个表单处理程序和页面重新加载得到答案并打破验证循环,所以其他形式的dotn被发布了吗?
AND - 您需要将表单ID更改为唯一!
答案 1 :(得分:1)
的Javascript。在每个表单中创建一个隐藏的提交字段,然后在单击您的实际提交按钮时,使其触发一个事件,要求浏览器像所有提交按钮一样被点击。
我会为此目的使用JQuery .trigger()事件。 http://api.jquery.com/trigger/
所以,如果你有一个id为&#34的实际提交按钮;提交全部&#34;和隐藏的提交按钮与类&#34;提交按钮&#34;你可以使用以下JQuery:
$(document).ready(function() {
$('#submit-all').click(function(){
$('.submit-button').trigger("click");
});
});
答案 2 :(得分:1)
而不是
var formDetails = $('#'+formID);
尝试
var formDetails = $(form);
我不知道修复你的bug是否足够。试试吧。
你的论证中已有你的表格。就像我一样将它包装在jQuery集合中。
另外,为了以防万一,请为所有表单提供不同的ID。
答案 3 :(得分:1)
我解决了。出现问题的原因是每个表单都具有相同的ID。通过增量变量,我在表单id中进行了更改,从一对一变化。然后问题解决了。非常感谢所有试图帮助我的人..!
答案 4 :(得分:0)
在while
循环中,每个表单都具有相同的id="form1"
。这不仅是无效的HTML,而且还会导致您只提交一个表单的问题。
增加表单ID,然后只需在JS中执行:
$('#submitAll').click(function(){
$('[id*="form"]').submit();
});