2011-05-04 81 views
0

所以我今天早上登录到客户端的网站(这是一个监控车辆使用情况等内部网)。 jQuery是一个网站的体面的一部分,但突然间它的失败,这些控制台错误:突然jQuery故障

jquery.js:1Uncaught SyntaxError: Unexpected token : www.mydomain.com:21Uncaught ReferenceError: jQuery is not defined www.mydomain.com:50Uncaught ReferenceError: $ is not defined

,我在过去一周已经改变的唯一的事情是增加一个字符集和改变的doctype到:

<? header("Content-Type: text/html; charset=UTF-8"); ?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd" 
    > 

我认为这可能是问题,但删除header()和DOCTYPE不能解决问题。任何想法可能会发生什么?

编辑1: Chrome检查器显示没有任何加载失败。

编辑2:头节

<head> 
    <title>Intranet</title> 
    <link href="/intranet/style/default.css" rel="stylesheet" type="text/css" /> 
    <script type="text/javascript" src="/intranet/js/jquery.js"></script> 
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAb-ZNlr3CQw5Wb5StE921RxSRXiZIiheENMB8Q6Efuo3Cg-x8OhRoSG-6YA6TMItzJlsBO4hkest8jw" type="text/javascript"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 

    <script type="text/javascript"> 
     //too much jQuery to post but it's always worked 
    </script> 
</head> 
+0

检查Firebug。 jQuery仍然被加载?同时删除您的PHP代码和doctype声明之间的换行符 – 2011-05-04 08:58:13

+0

使用Chrome Inspector进行检查,编辑了我的问题 – Dormouse 2011-05-04 09:00:01

+0

您能显示“head”部分吗?在外部文件中抛出错误的代码在哪里? – 2011-05-04 09:01:05

回答

1

如果文件编码为UTF-8,则只能将该文件作为UTF-8提供。更改内容类型编码,而不改变文件本身的编码,肯定会破坏它。

重要的是要注意,一些编辑保存UTF-8与BOM (Byte order mark)这可以给你很多头痛。没有必要为UTF-8使用BOM,所以使用编辑器,您可以选择在没有BOM的情况下进行保存。

正如我在上面的评论中提到的那样,当从Google AJAX API加载库时,应该指定要使用的库的完整版本,否则当更改引入可能会中断的新维护版本时,最终会遇到问题您现有的代码。我提到了这种经验;)

此外,我可以看到你的代码很多不一致。我会更改为以下:

<? header("Content-Type: text/html; charset=UTF-8"); ?> 
<!DOCTYPE html> 
<head> 
    <title>Intranet</title> 
    <link href="/intranet/style/default.css" rel="stylesheet" type="text/css" /> 
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" /> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js"></script> 
    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAb-ZNlr3CQw5Wb5StE921RxSRXiZIiheENMB8Q6Efuo3Cg-x8OhRoSG-6YA6TMItzJlsBO4hkest8jw"></script> 

    <script type="text/javascript"> 
     //too much jQuery to post but it's always worked 
    </script> 
</head> 

一两件事是重要的PHP改变字符编码时的注意事项:如果您使用setlocale你还需要将其变成使用UTF-8的语言环境。即。 en_USen_US.UTF-8,或者你可能会得到一堆

0

改变你的doctype很可能会改变你的浏览器是什么样的渲染模式,如果你是某种怪异的模式之前,你现在可以在更多的标准。 (或反之亦然)。完全删除doctype会导致浏览器猜测要使用的渲染模式,还是会使用它具有的任何默认渲染模式。尝试将文档类型更改回其原始值。