2 回答
TA贡献1780条经验 获得超1个赞
首先,对于第三个代码片段,$('#t1')由于在文档准备好时未呈现表格,因此不可用。该表是在 AJAX 请求响应之后插入的。如果要初始化某些内容,请在 AJAX 请求success回调中进行。
对于提交选中的行,建议使用属性选择器。
html输出:
$output .= '
<tr>
<th scope="row">'.$tableRowCounter.'</th>
<td>'. $db->getArticleString($row2["idArticle"]) ." - " . $row2["idArticle"]. '</td>
<td>'. $row2["duration"] .'</td>
<td>'. $row["newDuration"] .'</td>
<td><input type="checkbox" data-id="'. $row['id'] .'" name="name" value="value"></td>
</tr>';
然后按钮处理程序:
$("#submit").onclick(function() {
var selectedIds = []
$("table input[type=checkbox]").forEach(function(i, elem) {
var cb = $(elem)
if (cb.prop('checked')) {
selectedIds.push(cb.attr('data-id'))
}
// send selectedIds to server
})
})
TA贡献1795条经验 获得超7个赞
我无法完全将您的解决方案应用于我的问题。但是,我看到了它是如何制作的,并在我对 JavaScript 的理解水平上再次编写了它。
我知道不应该这样做,但我没有看到任何原因为什么我会遇到没有唯一 ID 的问题
我已经给了我的 tds ID。像这样:
<tr>
<th scope="row">'.$tableRowCounter.'</th>
<td>'. $db->getArticleString($row2["idArticle"]) .'</td>
<td id="article">'. $row2["idArticle"] .'</td>
<td id="duration">'. $row2["duration"] .'</td>
<td id="newDuration">'. $row["newDuration"] .'</td>
<td>'. $db->getName($row["Person_idPerson"]) . " ".$db->getLastName($row["Person_idPerson"]) .'</td>
<td id="check"><input type="checkbox" id="check" name="name" value="value"></td>
</tr>
然后我可以轻松地遍历 tds 并将值推送到数组中:
var article = [];
var duration = [];
var newDuration = [];
var check = [];
$("td[id='article']").each(function(){
article.push($(this).text());
})
$("td[id='duration']").each(function(){
duration.push($(this).text());
})
$("td[id='newDuration']").each(function(){
newDuration.push($(this).text());
})
$("input[id='check']").each(function(){
if ($(this).is(':checked')){
check.push(1);
}else{
check.push(0);
}
})
并使用 Ajax 发布数组
$.ajax({
type:'POST',
url:'storeData.php',
data: { article: article,
duration: duration,
newDuration: newDuration,
check: check
},
success:function(data){
//alert(data)
},
});
在 storeData.php 中,我可以使用这些数组并做任何我想做的事
$article = $_POST['article'];
$duration = $_POST['duration'];
$newDuration = $_POST['newDuration'];
$check = $_POST['check'];
print_r($article);
print_r($duration);
print_r($newDuration);
print_r($check);
- 2 回答
- 0 关注
- 150 浏览
添加回答
举报