第一件事:如果您已包括您的jQuery的文件,如下所示:
<script type="text/javascript" src="//code.jquery.com/jquery-1.12.3.min.js">
<script>
$(document).ready(function() {
$("#active_banner").change(function() {
var id = "<?=$data->promotion_banner_id?>"
var active = $("#active_banner").val();
jQuery.ajax({
type: "GET",
url: "/ADMIN/ajax/active_banner/",
data: {id:id,active:active},
});
});
});
</script>
在上述情況下,有必要關閉</script>
標籤的包含語句。因此,jQuery的包括應該是:
<script type="text/javascript" src="//code.jquery.com/jquery-1.12.3.min.js"></script>
的jQuery的版本可能是一樣的,你已經使用&它不一定需要是什麼,我在這裏提到。
其次,既然你說你是通過一個foreach循環顯示的複選框,你應該把在其他屬性上的複選框,例如:數據-ID
<input id="active_banner" type='checkbox' name='active_banner' value='1' title='Active Banner' <?=($data->promotion_active == 1)? "checked":""?> data-id="YOUR_UNIQUE_CHECKBOX_ID" class="active_banner_chk" />
其中YOUR_UNIQUE_CHECKBOX_ID是一個獨特的值每個複選框都不相同。
然後,修改您的jQuery的是:
<script>
$(document).ready(function() {
$(".active_banner_chk").click(function() {
var id = "<?=$data->promotion_banner_id?>";
var active = 0;
if($(this).is(':checked')) {
var active = $(this).attr('data-id');
}
jQuery.ajax({
type: "GET",
url: "/ADMIN/ajax/active_banner/",
data: {id:id,active:active},
});
});
});
</script>
也避免了增加數據-ID &的額外屬性,而不是有你的jQuery & HTML元素象下面這樣:
<script>
$(document).ready(function() {
$(".active_banner_chk").click(function() {
var id = "<?=$data->promotion_banner_id?>";
var active = 0;
if($(this).is(':checked')) {
var active = $(this).val();
}
jQuery.ajax({
type: "GET",
url: "/ADMIN/ajax/active_banner/",
data: {id:id,active:active},
});
});
});
</script>
<input id="active_banner" type='checkbox' name='active_banner' value='1' title='Active Banner' <?=($data->promotion_active == 1)? "checked":""?> class="active_banner_chk" />
呼叫你的jQuery基於類名稱&然後使用$this.val()
而不是$('#active_banner').val()
確保您獲得當前複選框的值而不是第一個che ckbox總是。
你怎麼知道什麼都沒有發生?你沒有成功處理程序,也沒有錯誤處理程序,並指出重定向將發回任何其他控制器回聲。它不會導致你的頁面重定向 – charlietfl
如果用戶也取消選中複選框,同樣使用'click'將觸發,但你不檢查它的狀態 – charlietfl
@charlietfl你能幫我解決這個問題嗎?因爲當我檢查我沒有看到任何腳本在螢火蟲運行 – Kelvin