2011-05-04 99 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會導致瀏覽器猜測要使用的渲染模式,還是會使用它具有的任何默認渲染模式。嘗試將文檔類型更改回其原始值。