我正在使用php生成按钮表
echo ' <td">
<form action="test.php" method="POST">
<input type="hidden" id="node" name="node" value="'.$fnode->{'name'}.'">
<input type="hidden" id="service" name="service" value="'.$flavor.'">
<input type="hidden" id="running" name="running" value="false">
<input type="submit" value="OFF" class="button">
</form>
</td>';
我想发送值而不通过jquery ajax重新加载,我正在使用此代码:
$(“。button”)。click(function(){ $( '错误')隐藏();
var dataString = 'node='+ document.getElementById('node').value + '&service=' + document.getElementById('service').value + '&running=' + document.getElementById('running').value;
$.ajax({
type: "POST",
url: "test.php",
data: dataString,
success: function() {
alert ("Success");
}
});
return false;
});
代码到目前为止工作 - 它总是从第一个表单发送数据。区分所有按钮的最佳方法是什么。我可以在表单中使用一个计数器,但我怎么能写出js“ifs”。 有没有更优雅的方式来做到这一点。表格数量是动态的。
答案 0 :(得分:1)
您可以轻松地抓取单击按钮的父窗体,但您也可能希望在窗体上有其他ID的唯一ID。您还需要删除输入上的ID或使其唯一。
echo ' <td">
<form action="test.php" method="POST" id="form_node_' . $fnode->{'name'} . '>
<input type="hidden" name="node" value="'.$fnode->{'name'}.'">
<input type="hidden" name="service" value="'.$flavor.'">
<input type="hidden" name="running" value="false">
<input type="submit" value="OFF" class="button">
</form>
</td>';
$(".button").click(function(e) {
e.preventDefault();
$('.error').hide();
var $form = $(this).closest('form'), // the closest parent form
dataString = $form.closest('form').serialize(); // serialize the values instead of manually encoding
$.ajax({
type: "POST",
url: "test.php",
data: dataString,
success: function() {
alert ("Success submitting form ID " + $form.attr('id'));
// you can now modify the form you submitted
}
});
return false;
});
答案 1 :(得分:0)
最好的方法是为表单元素使用唯一ID。另一种方法是将类设置为具有相同名称的多个元素。
但是,以下方法更为可取:
$("form").on("submit", function() {
$.ajax({
type: "POST",
url: "test.php",
data: $(this).serialize(),
success: function() {
alert ("Success");
}
});
return false;
});
(但无论如何不要忘记从表单元素中删除重复的id
属性。)
答案 2 :(得分:0)
您可以为每个提交按钮指定一个ID:
<input id="button-1" type="submit" value="OFF" class="button">
然后点击特定按钮触发事件:
$("#button-1").click(function() { ... });