Diese Woche bin ich in der Firma mal wieder über ein Problem (bzw. eine Aufgabe *g*) gestolpert.
Solltet ihr jemals auf die Idee kommen die getScript()-Funktion von jQuery zu nutzen um JavaScript-Code auszuführen den ein CI-Controller zurückliefert werdet ihr sehr wahrscheinlich über das Problem stolpern, dass getScript() an die URL die ihr aufruft ein “?_=xxxx” anhängt. Angenommen Ihr wollt also
http://eure-domain/gib/mir/javascript
aufrufen, dann ruft jQuery in Wirklichkeit z.B.
http://eure-domain/gib/mir/javascript?_=1234567890
auf. Dies macht jQuery um das Caching zu verhindern. Für CI ist das aber tödlich und führt zu einem klassischen “404 – Page not found” Fehler.
Man kann dieses Verhalten leider nicht ohne weiteres umgehen (es sei denn, man aktiviert in CI die Nutzung des Query-Strings wieder was aber ein paar Nachteile hat). Allerdings gibt es einen einfachen Ersatz. Statt getScript() nutzt man einfach die ajax() Funktion von jQuery:
$.ajax({
type: "GET",
url: "http://eure-domain/gib/mir/javascript",
dataType: "script",
cache: true
});Wichtig dabei ist das “cache: true” weil man sonst wieder in das gleiche Problem läuft. Um das Caching trotzdem zu verhindern sollte man im Controller auf jeden Fall die No-Cache Header mitsenden und man kann natürlich auch statt
http://eure-domain/gib/mir/javascript
einfach
http://eure-domain/gib/mir/javascript/eine_zufällige_zahl
aufrufen. CI stört sich nicht an dem zusätzlichen Parameter und im Controller kann man ihn einfach ignorieren.
Ich hoffe ich kann damit jemandem nervige Debugging-Zeit ersparen 



[...] Dieser Eintrag wurde auf Twitter von Christian Land, Web Development Team erwähnt. Web Development Team sagte: jQuery getScript() ohne dynamische jQuery URL Parameter: http://bit.ly/8Ef5GQ [...]