Als ich kürzlich die Webseite guenterrittner.de auf Ajax umgestellt habe, habe ich die Anfragen mit der simplen wie effektive Jquery Funktion $.load() ausgeführt.
$("#content").load("/ajax/ajaxcontent",function(data){
/* callback stuff */
});
Allerdings wollte ich zeitgleich den Kopf Title-Tag der Seite neu setzen.
Irgendwoher musste ich also den Titel bekommen. Somit habe ich alles auf die Funktion $.getJSON() umgestellt und mir aus PHP5 mit json_encode() ein Array-Objekt als JSON formatiert zurück geben lassen.
PHP Code:
<?php
$arr=array('title'=>'Neuer Title','content'=>'HTML Content');
echo json_encode($arr);
?>
Javascript Code:
$.getJSON("/ajax/ajaxcontent",function(data){
$("title").html(data.title);
$("#content").html(data.content);
});
Problem:
Alles funktionierte im Firefox 9 und Google Chrome, jedoch im Internet Explorer erscheint plötzlich die Fehlermeldung: Unerwarteter Aufruf oder Zugriff.
Mein erster Gedanke, dass es an der Umstellung auf JSON liegt, ist jedoch falsch.
Lösung:
Über Javascript-Debugging konnte ich heraufinden dass es mit innerHTML zu tun hat. Und letztlich lag es an der Zeile $(„title).html. Statt dessen sollte man ausschließlich document.title verwenden!
$.getJSON("/ajax/ajaxcontent",function(data){
// $("title").html(data.title);
document.title = data.title
$("#content").html(data.content);
});
Weitere Informationen dazu findet man im Jquery Forum und in den Google Groups.