これは、jQueryまたはクライアント側のスクリプトコードの癖とは何の関係もありません。これはサーバー側の問題です。サーバー(側のアプリケーション)が、クライアント側のスクリプトリソースに必要なHTTP Content-Type
ヘッダーフィールド値を送信していません。これは、Webサーバーが十分に構成されていないか、正しく構成されていない場合、またはサーバー側のアプリケーション(PHPなど)がクライアント側のスクリプトリソースを生成している場合に発生します。
JavaScriptのようなECMAScript実装に適したMIMEメディアタイプは次のとおりです。
text/javascript
(廃止として登録され、非推奨ではありませんが、まだ有効であり、サポートが最適です)
text/ecmascript
(廃止として登録され、非推奨ではありませんが、まだ有効です)
application/javascript
application/ecmascript
上記のMIMEメディアタイプは現在標準ツリーに登録されているため、これらは含まれていませんapplication/x-javascript
(したがって、実験的なものを使用する必要はなく、もう必要ありません)。Cf. RFC 4329、 "Scripting Media Types"(2005 CE)と私のテストケース:Scripting Media Typesのサポート。
1つの解決策は、すでに推奨されているように、可能であればサーバーを構成することです。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ファイルがある場合でも、サーバー側での生成はクライアント側のスクリプトリソースで簡単に発生する可能性があります。リクエストの数(より効率的です)、またはサーバーサイドアプリケーションによって他の方法で最小化されます。