我创建了一个HTML表,使用echo循环遍历数据库的每一行,该数据库使用SELECT语句从数据库中检索后存储到PHP fetch数组函数中。除此之外,我添加了另一个列,它是一个提交按钮,因此它遍历每一行。
我这样做是为了在提交时获取每行的“ID”并使用AJAX JQUERY运行另一个脚本。但问题是我的javascript代码只有在提交时才获取第一行的值,并且对其他行没有响应。
表格代码:
<form id="mainform">
<table>
<th>ID</th>
<?php
$result = mysql_query("SELECT * FROM test");
while ($row = mysql_fetch_array($result)) {
$ID = $row['ID'];
echo "<td><input type='hidden' id='hiddenfield' value='$ID'></td>";
echo "<td><input type='submit' value='select' /></td>";
}
?>
</table>
</form>
使用Javascript:
$("#mainform").on("submit", function(){
$("#testdiv").empty();
$.get("boom.php", { ID: $("#hiddenfield").val() },
function(data) {
$("#newdiv").append(data);
});
});
</script>
使用这个AJAX代码,我试图获得boom.php的值,现在我只是在测试是否已经解析了正确的值。
任何人都可以帮助我吗?我被卡住了......
答案 0 :(得分:0)
有两个问题:首先,您不能在多个字段上重复使用相同的id
。它们必须是独一无二的使用class
:
echo "<td><input type='hidden' class='hiddenfield' value='$ID'></td>";
即使这样,.val()
也只会返回第一个匹配项的值。
假设您想传递ID值列表,您需要自己构建列表:
$("#mainform").on("submit", function(){
$("#testdiv").empty();
var vals = [];
$('.hiddenfield').each(
function() {
var field = $(this);
vals.push(field.val());
}
);
$.get("boom.php", { ID: JSON.stringify(vals) },
将传递列表的字符串版本(例如["1","2","3"]
);
如果您想单独发送每个ID,请在each
循环中执行此操作:
$('.hiddenfield').each(
function() {
var field = $(this);
$.get("boom.php", { ID: field.val() },
}
);