Hallo,
was mache ich hier falsch?
$(document).ready(function() {
function refresh() {
$.ajax({
type: 'POST',
url: './reload.php',
data: {
ID: '".$ID."',
Art: 'K'
},
success : function(data) {
var einzeldata = JSON.parse( data );
if ( datenset.typ === 'success' ) {
$('.status').show(300);
} else if (datenset.typ === 'logout') {
$('.status').show(300);
exit;
} else {
//$('.inline_error').html(datenset.wert);
}
setTimeout(refresh, 5000);
},error:function(e){
//alert('Ajax Error')
;}
});
}
setTimeout(refresh, 5000);
});
reload.php (Quasicode)
$session_ok = 1;
if(session vorbei) {
$wertinhalt = 'Autologout!';
$session_ok = 0;
$data = array(
array('id' => '','wert' => $wertinhalt,'typ' => 'logout')
);
}
if($session_ok == 1) {
if(... == 1) {
$wertinhalt = "Es liegt eine Änderung vor, bitte Seite neu laden...";
$data = array(
array('id' => '','wert' => $wertinhalt,'typ' => 'success')
);
} else {
$data = array(
array('id' => '','wert' => $wertinhalt,'typ' => 'test')
);
}
}
$encodiert = json_encode($data);
echo $encodiert;
Wenn ein JSON String vom datenset.typ "success" kommt, wird die Statuszeile eingeblendet und alles läuft.
Wenn aber eine vom datenset.typ "logout" kommt, dann erhalte ich nr eine Fehlermeldung:
Uncaught SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
success http://localhost/reload.php?
Es scheint folgender JSON-String beim Script anzukommen:
[{"id":"","wert":null,"typ":"test"}]
Kann mir einer erklären, was hier falsch läuft und wie ich das permanente Feuern des Ajax schlicht nach einem Logout des Users abbrechen kann, auch wenn dieser Browsertab die ganze Zeit geöffnet bleibt?
Natürlich am liebsten mit einer Meldung in der Statuszeile, dass der User ausgeloggt wurde. Das war mein Ziel obigen Codes.
Sven