我正在开设一个网站,现在应该在任何时候完成,但我有一项新任务要完成我需要检查复选框以简单存档< / strong>新闻。或者“博客帖子”,如果你喜欢。
我们的想法是在每篇博文上都有一个复选框,如果您选中该复选框,则应归档。 (仅限管理员模式)。
我需要ajax来完成这项工作,但我还没有学到这一点。 PHP部分没问题。
问题确实是我不知道如何将每个复选框的唯一ID 传递给JavaScript函数,然后再传递给PHP函数。
好的,我有一组博客帖子,巫婆复选框,如下:
<div class="news_item">
<input name="checkbox_blog" id="checkbox1" value="1" type="checkbox" />
</div>
<div class="news_item">
<input name="checkbox_blog" id="checkbox2" value="1" type="checkbox" />
</div>
等等。 Id的填充来自MySQL的ID。
我有一些用于ajax复选框的插件,但它只适用于一个复选框。
基本上是这样的:
$("#checkbox").change(function() {
if($(this).is(":checked")) {
$.ajax({
url: 'admin/archive_it',
type: 'POST'
});
} else {
$.ajax({
url: 'admin/dont_archive_it',
type: 'POST'
});
}
});
在一个复选框上工作得很好,但我不知道如何继续。
任何提示?
我认为它可以使用两个不同的php脚本来检查和取消检查博客帖子,这并不重要,我只想让它开始使用不同的复选框。
谢谢!
解决方案:
我将id改为了类,并使用了Arun P Johny的代码:
$('.checkbox_blog').change(function () {
$.ajax({
url: this.checked ? 'admin/archive_it' : 'admin/dont_archive_it',
type: 'POST',
data: {
id: this.value
}
});
});
因为我正在使用CodeIgniter,并且启用了CSRF安全选项,所以我不得不将其添加到数据中:
<?=$this->security->get_csrf_token_name()?> : '<?=$this->security->get_csrf_hash()?>',
现在它完美无缺!谢谢大家!
答案 0 :(得分:2)
此处不需要ID,使用class属性对复选框进行分组,并将数据库ID作为复选框的值
<div class="news_item">
<input name="checkbox_blog" class="checkbox_blog" value="1" type="checkbox" />
</div>
<div class="news_item">
<input name="checkbox_blog" class="checkbox_blog" value="2" type="checkbox" />
</div>
然后在.checkbox_blog
元素的写更改处理程序中,并将数据库项的id传递给存档或不作为参数传递给服务器端PHP
$('.checkbox_blog').change(function () {
$.ajax({
url: this.checked ? 'admin/archive_it' : 'admin/dont_archive_it',
type: 'POST',
data: {
id: this.value
}
});
});
答案 1 :(得分:1)
你几乎就在那里,除了你可能需要照顾的东西很少,比如
JS CODE:
$(".checkbox").on('change',function() {
var chkBit=$(this).is(":checked");
var url;
if(chkBit)
tarUrl='admin/archive_it';
else
tarUrl='admin/dont_archive_it';
$.ajax({
url: tarUrl,
type: 'POST',
success:function(){
//when the call is successful do something
}
});
});`
答案 2 :(得分:0)
给你所有的复选框都是同一个类,然后在更改任何复选框时传递使用data属性选中的复选框的id(可能通过迭代所有复选框和类并收集被检查的复选框) )
答案 3 :(得分:0)
<input name="checkbox_blog" id="checkbox1" value="1" type="checkbox" onClick="YourFunction()" />
<input name="checkbox_blog" id="checkbox2" value="1" type="checkbox" onClick="YourFunction()" />
function YourFunction(){
if($(this).is(":checked")) {
$.ajax({
url: 'admin/archive_it',
type: 'POST'
});
} else {
$.ajax({
url: 'admin/dont_archive_it',
type: 'POST'
});
}
}
答案 4 :(得分:0)
如果您使用复选框中的ID进行设置,则可以像data
一样传递:{注意对选择器的更改$("input[id^=checkbox]")
$("input[id^=checkbox]").change(function() {
if($(this).is(":checked")) {
$.ajax({
url: 'admin/archive_it',
type: 'POST',
data: {
id: $(this).attr('id').split('checkbox')[1]
}
});
} else {
$.ajax({
url: 'admin/dont_archive_it',
type: 'POST',
data: {
id: $(this).attr('id').split('checkbox')[1]
}
});
}
});