突然的jQuery失败

时间:2011-05-04 08:57:31

标签: javascript jquery

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

  

jquery.js:1Uncaught SyntaxError:   意外的标记 :   www.mydomain.com:21Uncaught   ReferenceError:未定义jQuery   www.mydomain.com:50Uncaught   ReferenceError:$未定义

我在过去一周内唯一改变的是添加字符集并将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 Inspector显示无法加载任何内容。

编辑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>

2 个答案:

答案 0 :(得分:1)

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

值得注意的是,有些编辑用BOM (Byte order mark)保存了UTF-8,这会给你带来很多麻烦。没有必要为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,或者你最终会得到一堆

答案 1 :(得分:0)

更改您的doctype可能会改变您的浏览器所处的渲染模式。如果您之前处于某种怪癖模式,您现在可能处于更符合标准的模式(反之亦然)。完全删除doctype将导致浏览器猜测要使用哪种渲染模式,或者它将使用它具有的任何默认渲染模式。尝试将doctype更改回原始值。