Isso não tem nada a ver com jQuery ou qualquer peculiaridade do código de script do lado do cliente. É um problema do lado do servidor : O servidor (aplicativo do lado) não está enviando o campo de cabeçalho HTTP esperadoContent-Type
para o recurso de script do lado do cliente. Isso acontece se o servidor da Web estiver insuficientemente configurado, configurado incorretamente ou se um aplicativo do lado do servidor (por exemplo, PHP) estiver gerando o recurso de script do lado do cliente.
Os tipos de mídia MIME adequados para implementações do ECMAScript como JavaScript incluem:
text/javascript
(registrado como obsoleto , não obsoleto; mas ainda válido e com melhor suporte )
text/ecmascript
(registrado como obsoleto , não obsoleto; mas ainda válido )
application/javascript
application/ecmascript
Eles não incluem application/x-javascript
, pois os tipos de mídia MIME listados acima são os registrados na árvore de padrões até agora (portanto, não há necessidade e não deve haver necessidade de usar mais os experimentais). Cf. RFC 4329, "Tipos de Mídia de Script" (2005 CE) e meu Caso de Teste: Suporte para Tipos de Mídia de Script .
Uma solução é configurar o servidor, se possível, como já recomendado. Para o Apache, isso pode ser tão simples quanto adicionar a diretiva
AddType text/javascript .js
(consulte a documentação do servidor HTTP Apache para obter detalhes).
Mas se o recurso de script do lado do cliente for gerado por um aplicativo do servidor, como o PHP, será necessário definir o Content-Type
valor do campo de cabeçalho explicitamente, pois o padrão é provável text/html
:
<?php
header('Content-Type: text/javascript; charset=UTF-8');
// ...
?>
(Essas declarações e outras semelhantes devem ocorrer antes de qualquer outra saída - consulte o manual do PHP -, caso contrário, o corpo da mensagem HTTP já foi iniciado e é tarde demais para enviar mais campos de cabeçalho.)
A geração do lado do servidor pode ocorrer facilmente com um recurso de script do lado do cliente, mesmo se você tiver arquivos .js simples no servidor, se os comentários forem removidos enquanto são exibidos, se todos estiverem agrupados em uma única resposta grande (para reduzir a número de solicitações, que podem ser mais eficientes) ou são minimizados pelo aplicativo do servidor de qualquer outra maneira.