Frage

Entschuldigung für den schlechten Titel, aber ich weiß nicht, wie ich das nennt. Mein Problem ist, dass ich dieses JQuery -Ereignis, wenn ich einen Wert aus einem ausgewählten Kontrollkästchen übergehe, um die Kontrollkästchen zu überprüfen. Bassistisch spiegele ich $ res [] an; bei selecctedgr.php. Muss ich JSON verwenden? Und wie kann ich das machen?

Hauptseite:

$("#group_name").change(function(){
    var groupname = $("#group_name").val();
    var selectedGroup = 'gr_name='+ groupname;
    $.post("selectedgr.php", {data: selectedGroup}, function(data){
        $.each(data, function(){
            $("#" + this).attr("checked","checked");
        });
    },"json");


});

PHP (Selectedgr.php):

<?php
    include_once '../include/lib.php';
    $gr_name=mysql_real_escape_string($_POST['gr_name']);

    $sqlgr = "SELECT * FROM PRIVILLAGE WHERE MAINGR_ID=".$gr_name;
    $resultgr = sql($sqlgr);
    while($rowgr = mysql_fetch_array($resultgr)){
        $res[] = $rowgr['ACT_ID'];
    }

    echo $res[];
?>
War es hilfreich?

Lösung

Ändern Sie die letzte Zeile in Ihrer PHP -Probe (echo $res[];) zu:

echo json_encode($res);

json_encode() Manuelle Seite zeigt Ihnen mehr.

Auch wie @Unicron sagt, dass Sie die Variable $ gr_name validieren müssen, bevor Sie sie an Ihre SQL -Anweisung weitergeben.

Du könntest benutzen:

if(isset($_POST['gr_name'])) {
    $gr_name = mysql_real_escape_string($_POST['gr_name']);
}

Sehen: http://php.net/manual/en/function.mysql-real-escape-string.php Weitere Informationen im PHP -Handbuch.

Andere Tipps

Sie können verwenden JSON_ENCODE Funktion zur Umwandlung beliebiger Daten in JSON. Unter der Annahme, dass Sie eine Reihe von Zeichenfolgen zurückgeben möchten, verwenden Sie hier JSON_Encode:

<?php
    include_once '../include/lib.php';
    $res = array(); // initialize variables
    $sqlgr = sprintf("
        SELECT ACT_ID
        FROM PRIVILLAGE
        WHERE MAINGR_ID=%d
        ",
        $_POST['gr_name']
    ); // only select those columns that you need
       // and do not trust user input
    $resultgr = sql($sqlgr);
    while($rowgr = mysql_fetch_array($resultgr)){
        $res[] = $rowgr['ACT_ID'];
    }
    echo json_encode($res); // use json_encode to convert the PHP array into a JSON object
                            // this will output something like ['foo', 'bar', 'blah', 'baz'] as a string
?>

Auf der Clientseite können Sie verwenden JQuery.Post -Methode, so was:

<script type="text/javascript">
$("#group_name").change(function () {
    $.post("selectedgr.php", {
        gr_name: $(this).val()
    }, function (data) {
        // console.log(data);
        // jQuery will convert the string "['foo', 'bar', 'blah', 'baz']" into a JavaScript object
        // (an array in this case) and pass as the first parameter
        for(var i = 0; i < data.length; i++) {
            $("#" + data[i]).attr("checked", "checked");
        }
    }, "json");
});
</script>

Wenn Sie JSON verwenden möchten, verwenden Sie einfach einfach echo json_encode($res);Aber ich verstehe nicht wirklich, was Sie gewinnen werden, wenn Ihr Code jetzt funktioniert, da Sie immer noch eine Verarbeitung im JavaScript durchführen müssen, um das Ergebnis zu verarbeiten.

Ich fand mein Hauptproblem wie unten

statt (vor):

 $.post("selectedgr.php", {data: selectedGroup}, function(data){

Tun Sie dies (danach):

$.post("selectedgr.php", selectedGroup, function(data){

Vergib mein schlechtes. Ahh ya Leute, die die Flucht auf MySQL eigentlich über #group_name ist kein Eingangsfeld, sondern ein Auswahlfeld. Schätzen Sie für jeden Kommentar, jeden Vorschlag und jeden Leitfaden.

Eric.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top