Questo non ha nulla a che fare con jQuery o qualsiasi stranezza del codice di script lato client. È un problema sul lato server : il server (applicazione sul lato) non sta inviando il valore del Content-Type
campo di intestazione HTTP previsto per la risorsa di script sul lato client. Ciò accade se il server Web non è configurato correttamente, configurato in modo errato o un'applicazione sul lato server (ad esempio PHP) sta generando la risorsa di script sul lato client.
I tipi di media MIME corretti per le implementazioni di ECMAScript come JavaScript includono:
text/javascript
(registrato come obsoleto , non deprecato; ma comunque valido e supportato al meglio )
text/ecmascript
(registrato come obsoleto , non deprecato; ma comunque valido )
application/javascript
application/ecmascript
Essi non comprendono application/x-javascript
, come i mezzi di comunicazione tipi MIME sopra elencati sono quelli registrati nella struttura standard ormai (quindi non c'è bisogno, e non ci dovrebbe essere bisogno, più utilizzare quelli sperimentali). Cf. RFC 4329, "Tipi di supporti di scripting" (2005 CE) e il mio caso di prova: supporto per tipi di supporti di scripting .
Una soluzione è configurare il server, se possibile, come già raccomandato. Per Apache, questo può essere semplice come aggiungere la direttiva
AddType text/javascript .js
( per i dettagli, consultare la documentazione del server HTTP Apache ).
Ma se la risorsa di script sul lato client viene generata da un'applicazione sul lato server, come PHP, è necessario impostare Content-Type
esplicitamente il valore del campo di intestazione, poiché è probabile che il valore predefinito text/html
:
<?php
header('Content-Type: text/javascript; charset=UTF-8');
// ...
?>
(Questa e altre affermazioni simili devono precedere qualsiasi altro output - vedi il manuale di PHP -, altrimenti il corpo del messaggio HTTP è considerato già iniziato ed è troppo tardi per inviare più campi header).
La generazione sul lato server può avvenire facilmente su una risorsa di script sul lato client anche se sul server sono presenti file .js semplici, se i commenti vengono rimossi da essi man mano che vengono pubblicati, se sono tutti raggruppati in un'unica risposta di grandi dimensioni (per ridurre il numero di richieste, che possono essere più efficienti) o che sono minimizzate dall'applicazione lato server in qualsiasi altro modo.