Esto no tiene nada que ver con jQuery o cualquier peculiaridad del código de script del lado del cliente. Es un problema del lado del servidor : el servidor (aplicación del lado) no envía el valor esperado del Content-Type
campo de encabezado HTTP para el recurso de script del lado del cliente. Esto sucede si el servidor web no está configurado adecuadamente, está mal configurado o si una aplicación del lado del servidor (por ejemplo, PHP) está generando el recurso de script del lado del cliente.
Los tipos de medios MIME adecuados para implementaciones de ECMAScript como JavaScript incluyen:
text/javascript
(registrado como obsoleto , no en desuso, pero aún válido y mejor soportado )
text/ecmascript
(registrado como obsoleto , no en desuso, pero aún válido )
application/javascript
application/ecmascript
Ellos no son application/x-javascript
, como los tipos de medios MIME mencionados anteriormente son los registrados en el árbol de normas por ahora (lo que no hay necesidad, y no debe haber ninguna necesidad, utilizar los experimentales más). Cf. RFC 4329, "Tipos de medios de secuencias de comandos" (2005 CE) y mi caso de prueba: Soporte para tipos de medios de secuencias de comandos .
Una solución es configurar el servidor si es posible, como ya se recomienda. Para Apache, esto puede ser tan simple como agregar la directiva
AddType text/javascript .js
(Consulte la documentación del Servidor Apache HTTP para más detalles).
Pero si el recurso de script del lado del cliente es generado por una aplicación del lado del servidor, como PHP, entonces es necesario establecer el Content-Type
valor del campo de encabezado explícitamente, ya que es probable que el valor predeterminado sea text/html
:
<?php
header('Content-Type: text/javascript; charset=UTF-8');
// ...
?>
(Esa y otras declaraciones similares deben aparecer antes que cualquier otra salida; consulte el manual de PHP ; de lo contrario, se considera que el cuerpo del mensaje HTTP ya ha comenzado y es demasiado tarde para enviar más campos de encabezado).
La generación del lado del servidor puede pasar fácilmente a un recurso de secuencia de comandos del lado del cliente, incluso si tiene archivos .js simples en el servidor, si los comentarios se eliminan a medida que se sirven, si todos se empaquetan en una gran respuesta (para reducir el número de solicitudes, que pueden ser más eficientes), o la aplicación del lado del servidor las minimiza de cualquier otra manera.