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


