Dies hat nichts mit jQuery oder einer Eigenart von clientseitigem Skriptcode zu tun. Es handelt sich um ein serverseitiges Problem: Der Server (-seitige Anwendung) sendet nicht den erwarteten Wert des HTTP- Content-Type
Headerfelds für die clientseitige Skriptressource. Dies geschieht, wenn der Webserver nicht ausreichend konfiguriert oder falsch konfiguriert ist oder eine serverseitige Anwendung (z. B. PHP) die clientseitige Skriptressource generiert.
Zu den richtigen MIME-Medientypen für ECMAScript-Implementierungen wie JavaScript gehören:
text/javascript
(als veraltet registriert , nicht veraltet, aber immer noch gültig und am besten unterstützt )
text/ecmascript
(registriert als veraltet , nicht veraltet; aber immer noch gültig )
application/javascript
application/ecmascript
Sie sind nicht enthalten application/x-javascript
, da die oben aufgeführten MIME-Medientypen bereits im Standardbaum registriert sind (daher besteht keine Notwendigkeit mehr und es sollte auch kein Wunsch mehr bestehen, experimentelle zu verwenden). Vgl. RFC 4329, "Scripting Media Types" (2005 CE) und mein Testfall: Unterstützung für Scripting Media Types .
Eine Lösung besteht darin, den Server nach Möglichkeit zu konfigurieren, wie bereits empfohlen. Für Apache kann dies so einfach sein wie das Hinzufügen der Direktive
AddType text/javascript .js
( Weitere Informationen finden Sie in der Apache HTTP Server-Dokumentation .)
Wenn die clientseitige Skriptressource jedoch von einer serverseitigen Anwendung wie PHP generiert wird, muss der Content-Type
Headerfeldwert explizit festgelegt werden, da der Standard wahrscheinlich ist text/html
:
<?php
header('Content-Type: text/javascript; charset=UTF-8');
// ...
?>
(Diese und ähnliche Aussagen müssen vor jeder anderen Ausgabe stehen - siehe das PHP-Handbuch - sonst wird angenommen, dass der HTTP-Nachrichtentext bereits begonnen hat und es zu spät ist, weitere Headerfelder zu senden.)
Die serverseitige Generierung kann leicht zu einer clientseitigen Skriptressource führen, selbst wenn Sie einfache .js-Dateien auf dem Server haben, wenn Kommentare während der Zustellung von ihnen entfernt werden, wenn sie alle in einer großen Antwort zusammengefasst sind (um die Anzahl der Anforderungen, die effizienter sein können) oder die von der serverseitigen Anwendung auf andere Weise minimiert werden.