[jQuery] + JSON +PHP

mgraf

Erfahrenes Mitglied
Hallo,
ich denke mein Thema passt hier am beste rein.

Und zwar ich möchte meine Seite anhand einer Select-Auswahl befüllen, der Inhalt kommt aus einer externen PHP Datei als JSON.

externe JSON Datei:
http://sandbox.fh-krems.ac.at/static/generate_from_source/selectfromtable.php?table=countries

Die ist die Index Datei:
http://sandbox.fh-krems.ac.at/static/generate_from_source/

In der Index-Seite werden alle vorhandenen Tabellen mit den Spaltennamen ausgegeben -> funktioniert
Anhand der getroffenen Auswahl übergebe ich an die JSON-Datei, die Variable 'table', anhand dieser, wird die Json Ausgabe erstellt....

Anschliessend soll er die bekommen Daten als li in #sortable einfügen -> funktioniert NICHT

Und mittlerweile, sehe ich den Wald vor lauter Bäumen nicht mehr, mir scheint...

Hoffe jemand von Euch kann mir hier weiter helfen!

lg
michi
 
Moin Michi,

deine selectfromtable.php gibt kein korrektes JSON aus, weswegen dort die Callback-Funktion überhaupt nicht aufgerufen wird.

Da du dort ja mit PHP arbeitest, erstelle am Besten mit PHP einen assoziativen Array aus den Daten und kodiere diesen per [phpf]json_encode[/phpf] , so vermeidest du Fehler beim umwandeln "von Hand" :)
 
hi,
ich hatte zu Beginn, bis kurz bevor ich aus der Firma gegangen bin, einen simplen Array:

PHP:
<?php
$query = mysql_query('SHOW COLUMNS FROM '.make_safe($_GET[table]).'') OR die(mysql_error());
if (!$query) {
  echo 'Abfrage konnte nicht ausgeführt werden: ' . mysql_error();
  exit;
}

$row = array();
while($r = mysql_fetch_array($query)){
  $row[] = $r[0];
}
print json_encode($row);
?>

Ergebnis:
Code:
["id","en","de","iso","numcode"]
Ich hab hier auch schon den ganzen PHP-Code auf ein Minimum zurückgestutzt - hab ja net viel Ahnung davon, is mir viel zu kompliziert... ;-)

So, jetzt geht die ganze Diskussion doch eher in PHP-Richtung... sry
 
Zuletzt bearbeitet:
Das Ergebnis würde so schon ausreichen, es müsste jetzt nur noch der Durchlauf des Arrays angepasst werden:
Code:
<script type="text/javascript">
$(document).ready(function() {

  $("select#table")
    .change(
            function()
            {
              $.getJSON(
                          "selectfromtable.php",
                          {table:$(this).val()}, 
                          function(data)
                          {
                            $("#sortable").empty();
                            $.each(data, 
                                   function(i, title)
                                   {
                                    $('<li/>').text(title).appendTo("#sortable");
                                   }
                                  )
                          }
                        )
            })});	
</script>
 
Also, ich hätte jetzt mein JS mit deinem KungFu ersetzt - funktioniert aber noch immer net *ätschibätschi* :-)

Muss ich für die JSON Datei irgendeinen speziellen Header setzen, weil es funktioniert ja alles, bis eben auf den JSON-Teil. (Es hat immer schon alles funktioniert, bis auf den JSON Teil im JS)
 
Zuletzt bearbeitet:
Mmmh, sehr merkwürdig :eek:

Ich kann mir deinen Code kopieren und lokal testen, da haut er einwandfrei hin.

Was merkwürdig ist: hast du die Dateien mit BOM gespeichert? Zumindest scheint es so.
Falls ja, speicher ohne BOM.
 
Danke, jetzt funktionierts - mit Dreamweaver (Ohne BOM speichern hat nichts gebracht), mit Notepad++ hat es dann funktioniert!!

Danke Sven, auf das wäre ich nie gekommen...


PS: Dein KungFu ist gut... :D
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück