好吧,我设法得到复选框的值,但现在我有另一个问题。
这是我的观点,rssFeeds.php
<?php foreach( $feeds as $row ) : ?>
<div class="row">
<div class="col-md-2 col-sm-3 text-center">
<a class="story-title"><img alt="" src="http://www.solostream.com/wp-content/uploads/2014/06/20140110080918_0555.jpg" style="width:100px;height:100px"></a>
<label class="checkbox-inline">
<input type="checkbox" class="chkbox" value="chkbox_<?php echo $row->category; ?>_<?php echo $row->id; ?>"> Mark Read
</label>
</div>
<div clas="col-md-10 col-sm-9">
// here are my feeds....
</div>
</div>
<?php endforeach; ?>
我有这个脚本,它接受复选框值,并将其发送到我的控制器:
<script>
$(document).ready(function(){
$(document).on('click','.chkbox',function(){
var id=this.value;
$.ajax( {
type: "POST",
context: "application/json",
data: {id:id},
url: "<?php echo site_url('rssFeedReader/markReadUnread'); ?>",
success: function(msg)
{
// what should i do here ?....
}
})
});
});
</script>
在我的控制器中,我只是加载一个模型,该模型更改了数据库中的值0或1(表示已读或未读)。
问题是我的桌子上什么也没变。。。
我需要做点什么。ajax中的函数成功了吗?什么。。?我只需要更改数据库中的一个值。。。。
最佳答案
@詹姆斯·拉勒找到了你想要的答案,但我将进一步阐述。
您可以为输入提供相同的名称(单选按钮、复选框)以使它们彼此交互。对于单选按钮,实际上需要有相同的名称来标记和取消标记其他按钮。不过,在本例中,我们将使用<input name=example[]>
注意[]
,这意味着当您执行ajax post(或任何post)时,它将把所有选中的值作为数组发送。
因此,按照James的建议,您可以使用<input name="checkbox[<?php echo $row->id?>]"
进行$.post(url, data, callback)
发布,最简单的方法是将其放入表单中,为表单分配id,进行序列化发布。你可以这样做:
<form id="rss_form" method="post" action="javascript:rssUpdate();">
<input name="checkbox[<?php echo $row->id?>]" type="checkbox"/>
<input type="submit" value="submit"/>
</form>
<script>
function rssUpdate()
{
$.post(url/to/post/to, $("#rss_form").serialize());
}
</script>