JQUERY .val无法正常工作......使用PHP创建的HTML表无法获取特定的行值

时间:2014-01-02 20:59:51

标签: javascript php jquery html ajax

我创建了一个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的值,现在我只是在测试是否已经解析了正确的值。

任何人都可以帮助我吗?我被卡住了......

1 个答案:

答案 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() },
  }
);