JQuery .post () return Array
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[];
?>
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.