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.