Javascript 未通过AjaxForm/JQuery提交表单
有一个表格显示项目,每行有一个“删除”按钮。“删除”按钮位于窗体内。 我正在使用AjaxForm方法提交表单。单击“删除”按钮可以删除数据,而不会指向任何页面或刷新当前页面。 但实际情况是表单按照action标签上定义的常规方式提交 我以以下方式在表上显示结果:Javascript 未通过AjaxForm/JQuery提交表单,javascript,php,jquery,forms,ajaxform,Javascript,Php,Jquery,Forms,Ajaxform,有一个表格显示项目,每行有一个“删除”按钮。“删除”按钮位于窗体内。 我正在使用AjaxForm方法提交表单。单击“删除”按钮可以删除数据,而不会指向任何页面或刷新当前页面。 但实际情况是表单按照action标签上定义的常规方式提交 我以以下方式在表上显示结果: while($row = $result->fetch_assoc()) { ?> <tr> <td><?php echo ++$x
while($row = $result->fetch_assoc())
{
?>
<tr>
<td><?php echo ++$x; ?></td>
<td><?php echo $row["id"]; ?></td>
<td><?php echo $row["title"]; ?></td>
<td><?php echo $row["author"]; ?></td>
<td>
<form method="POST" id='deleteform' class="forms" action="deletebook.php">
<input type="hidden" name="deletebook" value='<?php echo $row["id"]; ?>' >
<button type="submit" class="btn btn-danger btn-xs">Delete</button>
</form>
</td>
</tr>
<?php
}
}
else
{
echo "No Books Found!";
}
while($row=$result->fetch_assoc())
{
?>
试着这样做:
while($row = $result->fetch_assoc())
{
?>
<tr>
<td><?php echo ++$x; ?></td>
<td><?php echo $row["id"]; ?></td>
<td><?php echo $row["title"]; ?></td>
<td><?php echo $row["author"]; ?></td>
<td>
<input type="hidden" class="hiddenId" value="<?php echo $row["id"]; ?>" />
<button type="button" class="btn btn-danger btn-xs">Delete</button>
</td>
</tr>
<?php
}
}
else
{
echo "No Books Found!";
}
?>
<script>
var id;
$(document).ready(function(){
$(".btn-danger").click(function(){
id = $(this).prev().val();
$.ajax({
url: "deletebook.php",
type: 'post',
data: {
"deletebook": id
}
}).done(function(response){
$(".hiddenId[value='" + id + "']").parent().parent().remove();
});
});
});
</script>
在php add方法中,返回如下字符串:
"<tr><td></td><td>1</td><td>$Title</td><td>$Author</td><td><input type=\"hidden\" class=\"hiddenId\" value=\"$Id\" /><button type=\"button\" class=\"btn btn-danger btn-xs\">Delete</button></td></tr>";
“1$Title$AuthorDelete”;
我想您在这里使用的是ajaxForm插件
ajaxForm()
method?这是插件的一部分吗?您是否在浏览器控制台中查看了请求/响应?这是无效的html。所有删除按钮都具有相同的id。您有n
个id='deleteform'
,那么您想用$('.\35; deleteform')绑定哪一个。ajaxForm(函数(){
,因为id
s应该是唯一的。类将是您的朋友。您正在使用event.preventDefault(),但未定义事件,请检查console@JayBlanchard抱歉,我是新手。是的,这是一个jquery插件。我如何查看响应?不起作用。顺便说一句,行以前被删除过。但是在更改代码后,就像你显示的那样,行也没有被删除。为什么不呢?我错过了“forms[“deleteform”]之前的“document”关键字。submit()我刚刚更新了上面的代码。我对它进行了测试,效果很好。它工作正常,但我现在又回到了原点。数据以前被正确删除过。现在也被删除了。我想要的是,当我按下删除按钮时,数据应该被删除,而不必将我发送到deletebook。phpWhy操作“试试这个?”“?请添加一个解释,说明您所做的事情以及您为什么这样做,不仅是为了OP,也是为了SO的未来访问者。我很抱歉。这是您期望的结果吗?您的回答成功删除了行。我可以在需要代码删除行而不将我发送到其他页面之前执行此操作。无论如何,Thnx。”。
$('#addbook').ajaxForm(
{
success: function(responseText, statusText, xhr, $form){
$('#booksuccess').modal('show');
$("#reset").click();
$("tr").last().append(responseText);
}
});
"<tr><td></td><td>1</td><td>$Title</td><td>$Author</td><td><input type=\"hidden\" class=\"hiddenId\" value=\"$Id\" /><button type=\"button\" class=\"btn btn-danger btn-xs\">Delete</button></td></tr>";
$(document).ready(function() {
$('#deleteform').ajaxForm(
{
beforeSubmit: function(formData, jqForm, options){
//show loader
},
success:function(responseText, statusText, xhr, $form) {
alert(responseText);
//hide loader
}
}
);
});