folgende Sachlage:
Per Auswahl in einem
<select id="spieltage" name="spieltage">möchte ich verschiedene Inhalte per ajax nachladen.
<script type="text/javascript"> $(document).ready(function() { // Spieltage $('#spieltage').on('change', function(e) { e.preventDefault(); var stid = $('#spieltage').val(); $.ajax({ url : 'index.php?tippspiel-getspieltag', type : 'POST', dataType : 'json', data : { spieltagid: stid }, success : function(response) { if (response.success) { $('.spieltag').html(response.spieltag); } else { alert(response.errorMsg); } } }); }); }); </script>
Für die Ausgabe habe ich mir eine Funktion geschrieben:
function renderSpieltage($stid, tpl $tpl) { $erg = db_query("SELECT s.spieltag, s.datum, s.heim_id, s.gast_id, th.id as hometeam_id, th.team_name as hometeam_name, tg.id as gastteam_id, tg.team_name as gastteam_name FROM prefix_tippspiel_spiele as s LEFT JOIN prefix_tippspiel_teams as th ON s.heim_id = th.id LEFT JOIN prefix_tippspiel_teams as tg ON s.gast_id = tg.id WHERE spieltag = " . $stid); $ergAnz = db_num_rows($erg); if ($ergAnz == 0) { echo '<b>Spieltag nicht angelegt</b>'; } else { $anz = $ergAnz; $nr = 0; while ($row = db_fetch_assoc($erg)) { $nr++; $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite'); $heim = $row['hometeam_name']; $gast = $row['gastteam_name']; $vs = '-'; $ar1 = array ( 'class' => $class, 'nr' => $nr, 'heim' => $heim, 'vs' => $vs, 'gast' => $gast ); $tpl->set_ar_out($ar1, 1); } } }
Beim Ändern der Auswahl im
<select>wird nun in der tippspiel.php im
case 'getspieltag'in den Ausgabe-Puffer geschrieben und verschiedene Variablen gefüllt.
case 'getspieltag': $success = false; $stid = escape($_POST['spieltagid'], 'integer'); if ($stid > 0) { $success = true; ob_start(); $tpl = new tpl('tippspiel/admin/rounds'); renderSpieltage($stid, $tpl); $spieltag = ob_get_clean(); } else { $errorMsg = 'Bitte Spieltag wählen'; } $response = array( 'spieltag' => $spieltag, 'success' => $success, 'errorMsg' => $errorMsg ); echo json_encode($response); break;
Das Ergebnis ist leider nicht zufriedenstellend:
Die Variable
$spieltagist null.
Wenn ich statt
echo json_encode($response);aber einfach das response-Array mit print_r ausgebe, sieht es besser aus:
Hat jemand eine Idee, warum im response-Array die Variable null ist?
Meine Vermutung ist, dass beim
echo json_encode($response);etwas nicht stimmt. Was muss ich ändern, damit das Ganze funktioniert?
Danke schonmal für die Hilfe!
verwendete ilch Version: 1.1 P
Zuletzt modifiziert von Outi77 am 28.12.2014 - 06:53:39