Это не имеет ничего общего с jQuery или каким-либо изюминкой кода скрипта на стороне клиента. Это проблема на стороне сервера : сервер (приложение на стороне) не отправляет ожидаемое значение Content-Type
поля заголовка HTTP для ресурса сценария на стороне клиента. Это происходит, если веб-сервер недостаточно настроен, неправильно настроен или приложение на стороне сервера (например, PHP) генерирует ресурс сценария на стороне клиента.
Правильные типы мультимедиа MIME для реализаций ECMAScript, таких как JavaScript, включают:
text/javascript
(зарегистрировано как устаревшее , не устарело; но все еще действует и поддерживается лучше )
text/ecmascript
(зарегистрировано как устаревшее , не устарело; но все еще действует )
application/javascript
application/ecmascript
Они не включают в себя application/x-javascript
, поскольку перечисленные выше типы носителей MIME уже зарегистрированы в дереве стандартов (поэтому больше нет необходимости и не должно быть необходимости использовать экспериментальные типы). Ср RFC 4329, «Типы носителей со сценариями» (2005 CE) и мой тестовый пример: Поддержка типов носителей со сценариями .
Одним из решений является настройка сервера, если это возможно, как уже рекомендовано. Для Apache это может быть так просто, как добавление директивы
AddType text/javascript .js
(подробности см. в документации по Apache HTTP Server ).
Но если ресурс сценария на стороне клиента генерируется серверным приложением, таким как PHP, то необходимо Content-Type
явно установить значение поля заголовка, так как по умолчанию это вероятно text/html
:
<?php
header('Content-Type: text/javascript; charset=UTF-8');
// ...
?>
(Эти и аналогичные операторы должны предшествовать любому другому выводу - см. Руководство по PHP - иначе тело сообщения HTTP уже началось и уже слишком поздно отправлять больше полей заголовка.)
Генерация на стороне сервера может легко произойти с ресурсом сценария на стороне клиента, даже если у вас есть простые файлы .js на сервере, если комментарии удаляются из них по мере их доставки, если они все упакованы в один большой ответ (чтобы уменьшить количество запросов (что может быть более эффективным), либо они минимизируются серверным приложением любым другим способом.