Erste Sache: wie unten Wenn Sie Ihre jQuery-Datei enthalten haben gezeigt:
<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>
In obigem Fall ist es notwendig, den </script>
Tag für die Include-Anweisung zu schließen. So umfassen die jQuery sein sollte:
<script type="text/javascript" src="//code.jquery.com/jquery-1.12.3.min.js"></script>
Die Version von jQuery die gleiche sein könnte, wie Sie & verwendet haben, ist es nicht unbedingt sein müssen, was ich hier erwähnt.
Zweitens, da Sie sagten, Sie die Kontrollkästchen durch eine foreach-Schleife werden angezeigt wird, sollten Sie in einem anderen Attribut auf Ihre Kontrollkästchen setzen, Beispiel: Daten-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" />
wo YOUR_UNIQUE_CHECKBOX_ID einen eindeutigen Wert ist die ist für jedes Kontrollkästchen unterschiedlich.
Dann ändern Sie Ihre jQuery sein:
<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>
können Sie auch vermeiden, dass die zusätzliche Eigenschaft der Daten-ID Hinzufügen & statt wie Ihre jQuery & HTML-Element haben unter:
<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" />
Berufung Ihr jQuery basierend auf dem Klassennamen & dann mit $this.val()
anstelle der $('#active_banner').val()
stellt sicher, dass Sie den Wert des aktuellen Kontrollkästchens anstelle des ersten che erhalten immer Box.
woher wissen Sie, dass nichts passiert? Sie haben keinen Erfolgs-Handler und keinen Fehler-Handler, und wie bereits erwähnt, sendet die Weiterleitung alle anderen Echos zurück.Es wird nicht dazu führen, dass Ihre Seite umgeleitet wird. – charlietfl
Auch die Verwendung von 'click' wird ausgelöst, wenn der Benutzer die Checkbox ebenfalls deaktiviert, aber Sie überprüfen nicht, ob der Status – charlietfl
@charlietfl ist. Können Sie mir helfen, dies zu beheben? denn wenn ich überprüfe, sehe ich kein laufendes Skript in Firebug – Kelvin