javascript
  • jquery
  • ajax
  • codeigniter
  • checkbox
  • 2016-07-04 7 views 0 likes 
    0

    Jungs wie eine Checkbox zu machen, wenn ich es den Wert auf Checkbox wird ohne einreichen Formular Datenbank senden Funktionwie Wert von Checkbox senden jquery und Ajax mit codeigniter

    das ist mein Checkbox:

    <input id="active_banner" type='checkbox' name='active_banner' value='1' title='Active Banner' <?=($data->promotion_active == 1)? "checked":""?> /> 
    

    und das ist mein jquery:

    <script> 
    $("#active_banner").click(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> 
    

    ich versucht habe zu prüfen, aber es gibt nichts in meinem ajax-Controller geschehen ist wird enthalten:

    function active_banner(){ 
        $id = $this->input->get("id",true); 
        $active = $this->input->get("active",true); 
    
        $this->Control_panel_m->update_banner_active($id,$active); 
        redirect('/ADMIN/'.country_code."/Edit_promotion_banner","refresh"); 
    
    } 
    

    guys können Sie mir helfen, wie es funktioniert?

    +1

    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

    +1

    Auch die Verwendung von 'click' wird ausgelöst, wenn der Benutzer die Checkbox ebenfalls deaktiviert, aber Sie überprüfen nicht, ob der Status – charlietfl

    +0

    @charlietfl ist. Können Sie mir helfen, dies zu beheben? denn wenn ich überprüfe, sehe ich kein laufendes Skript in Firebug – Kelvin

    Antwort

    0

    Sie müssen überprüfen, ob das geprüfte Kästchen aktiviert ist, klicken Sie wird für beide Kontroll Feuer und un geprüft Ereignisse

    Probieren Sie etwas mit wie folgt

    <script> 
    $("#active_banner").on("change",function(e) { 
         var id = "<?=$data->promotion_banner_id?>" 
         var active = $(this).is(":checked"); 
         jQuery.ajax({ 
         type: "GET", 
         url: "/ADMIN/ajax/active_banner/", 
         data: {id:id,active:active}, 
         }); 
        }); 
    </script> 
    
    +0

    unabhängig von der Überprüfung des Status ... OP muss Server für beide Bedingungen – charlietfl

    +0

    zu aktualisieren Aktualisiert den Code, jetzt in Ihrem Code das Problem ist, senden Sie den Wert des Kontrollkästchens, die immer Th bleiben wird Dies gilt auch für den Status "Check/Unchecked". –

    +0

    richtig, aber mein Punkt ist OP muss angehen, was für beide Bedingungen zu tun, so dass möglicherweise eine andere Eigenschaft auch benötigen. Nicht wirklich klar, wie das auf Server funktioniert, obwohl – charlietfl

    0

    versuchen die folgende

    $(function(){ 
    $("input[name='active_banner']").click(function() { 
        var id = "<?=$data->promotion_banner_id?>" 
        var active = $("#active_banner").val(); 
        if($(this).is("not(:checked)")){ 
         active = 0; 
        }; 
        jQuery.ajax({ 
         type: "GET", 
         url: "/ADMIN/ajax/active_banner/", 
         data: {id:id,active:active}, 
         success: function(data){ 
          window.location = data;//redirect with javascript 
         } 
        }); 
        }); 
        }); 
    

    php:

    function active_banner(){ 
        $id = $this->input->get("id",true); 
        $active = $this->input->get("active",true); 
    
        $this->Control_panel_m->update_banner_active($id,$active); 
        return '/ADMIN/'.$country_code."/Edit_promotion_banner";//return the url to redirect assuming country_code is a variable 
    
    } 
    
    +0

    Was ist mit Deaktivierung? – charlietfl

    +0

    ich folgte Ihrem Code, aber wenn ich überprüft habe, gibt es kein Skript in Firebug, wie nichts passiert – Kelvin

    +0

    tut die Seite umleiten? – madalinivascu

    0

    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.

    +0

    warum setzen Sie 'var active = 0 '? Ich muss es 1 senden, solange ich in den Eingabewert enthalten bin – Kelvin

    +0

    Wenn das Kontrollkästchen nicht aktiviert ist, wird es den Wert von 'aktiv' als 0 senden. Wenn es aktiviert ist, wird es den Eingabewert von senden dieses Kontrollkästchen. – tovishalck

    Verwandte Themen