Це не має нічого спільного з 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, якщо коментарі видаляються з них під час їх подачі, якщо всі вони упаковані в одну велику відповідь (щоб зменшити кількість запитів, які можуть бути більш ефективними), або їх мінімізує серверна програма будь-яким іншим способом.