2016-07-12 12 views
0

Ich versuche, ein Formular zu machen, wo es Ihnen ermöglicht, zu einer anderen Webseite fortzufahren, wenn ein Kontrollkästchen aktiviert wurde, und Sie andernfalls mit einer Warnung auffordert.Probleme beim Speichern des dynamischen Status eines Kontrollkästchens (Javascript, jQuery)

Mein Problem ist, dass das Kontrollkästchen den Zustand nicht dynamisch speichern wird. Als Ergebnis muss ich die Seite jedes Mal aktualisieren, wenn ich das Kontrollkästchen ankreuze, um zur nächsten Webseite zu gelangen. Gibt es etwas, das ich meinem Code hinzufügen muss? Ich habe die JavaScript-Funktion, die PHP-Seite, die den Status in der SQL ändert, sowie die Zeile, wo ich die Funktion selbst anschließe, angehängt.

Javascript-Funktion:

 //This function handles the clicking of checkboxes in the list 
     //It sends an ajax POST message to a separate php file that handles the database updating 
     function checkboxClicked(checkboxType, ticketNumber){ 
      $.ajax({ 
       type: "POST", 
       url: 'updateCheckbox.php', 
       dataType: 'json', 
       data: {checkboxType: checkboxType, ticketNumber: ticketNumber}, 

       success: function(result, status){ 
        if (status != "success"){ 
         console.log("Status: " + status + ", Result: " + result); 
        } 
       } 
      }); 
     } 

PHP-Datei (updatecheckbox.php)

<?php 
header('Content-Type: application/json'); 

$conn = new COM("ADODB.Connection"); 
$strCnn = "Provider=sqloledb; Data Source=booty;Initial Catalog=booty;Trusted_Connection=Yes"; 

$conn->open($strCnn); 

$strSQL = "UPDATE tblScantronTickets SET ".$_POST['checkboxType']."="; 
$strSQL .= "(SELECT ~".$_POST['checkboxType']." FROM tblScantronTickets WHERE TicketNumber=".$_POST['ticketNumber'].")"; 
$strSQL .= " WHERE TicketNumber=".$_POST['ticketNumber']; 

try { 
    $conn->Execute($strSQL); 
} 
catch(Exception $e) { 
    echo json_encode($e); 
} 

echo json_encode("SUCCESS!"); 

?> 

PHP Linie, wo ich die Funktion aufrufen:

$strHTML .= "<td align='center'> <input type='checkbox' ".$received." class='receivedCheckbox' onchange='checkboxClicked(\"Received\", ".$ticketNumber.")'/> </td>\n"; 
+0

dieses Skript finden wird nicht auf eine andere URL ist .. Ich kann Ihre Frage nicht verstehen. Wenn Sie das Formular absenden müssen, nachdem das Kontrollkästchen aktiviert ist, müssen Sie nach dem Ajax-Erfolg ein "form.submit" haben. Oder müssen Sie nach dem Speichern des Kontrollkästchens auf eine andere Seite umleiten? –

+0

Ihre Frage ist nicht sehr klar. Wenn sich das Kontrollkästchen in einem Formular befindet, wird es mit dem korrekten Status gesendet, unabhängig davon, ob Sie die Datenbank aktualisiert haben oder nicht. Könnten Sie bitte klarstellen, was Sie tun möchten? –

+0

Ich habe gerade einen Teil meines Codes gezeigt. Was ich tun möchte, ist, wenn das Kontrollkästchen aktiviert ist, mit der nächsten Seite fortzufahren. Andernfalls, fahren Sie nicht fort. Ab sofort muss ich die Seite jedes Mal aktualisieren, wenn ich den Checkbox-Status ändere. Zum Beispiel, wenn das Kontrollkästchen deaktiviert ist, muss ich es überprüfen und die Seite aktualisieren, bevor ich fortfahren kann. Ich möchte es, damit ich nicht auffrischen muss, klicke einfach auf das Kontrollkästchen und gehe. –

Antwort

0

Wenn Ihr Problem das erhalten ist, Status eines Kontrollkästchens, bevor Sie mit der nächsten Seite fortfahren, können Sie jQuery verwenden.

$('#checkbox').is(':checked'); 

Dies wird wahr zurück, wenn es aktiviert ist, und falsch, wenn es nicht

Verwandte Themen