2011-06-22 92 views
12

我試圖壓縮我的JavaScript代碼以在我的網站上獲得更少的流量。它一直工作正常,但現在我遇到了一個我無法解決的錯誤。javascript意外標識符

我把我的AJAX功能爲一行:

function(){if(xmlhttp.readyState==4&&xmlhttp.status==200){document.getElementById("content").innerHTML=xmlhttp.responseText;}}xmlhttp.open("GET","data/"+id+".html",true);xmlhttp.send();} 

但鉻控制檯告訴我有在這條線的意外標識符。 Firefox說這行上有一個分號丟失。

我一直在想弄清楚什麼是錯誤的,但我找不到錯誤,有人可以幫助我嗎?

+3

有助於解壓縮:http://jsbeautifier.org/ – JohnP

回答

30

是的,你有一個}太多。無論如何,壓縮自己往往會導致錯誤。

function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     document.getElementById("content").innerHTML = xmlhttp.responseText; 
    } 
} // <-- end function? 
xmlhttp.open("GET", "data/" + id + ".html", true); 
xmlhttp.send(); 
} 

改爲使用Closure Compiler

+4

也常見於在對象中丟失逗號的相同錯誤。 –

+0

而那些在對象屬性之後往往會丟失,特別是當您在對象內添加/移動變量/函數時。 – totymedli

8

結束 - 如果你粘貼代碼片段,並按下美化,錯誤的是立即可見。

2

看起來代碼中有一個額外的花括號。

function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     document.getElementById("content").innerHTML = xmlhttp.responseText; 
    } 
// extra bracket } 
xmlhttp.open("GET", "data/" + id + ".html", true); 
xmlhttp.send(); 
} 
3

在這種情況下,你最好再增加,這使得語法錯誤立即明顯的空白:

function(){ 
    if(xmlhttp.readyState==4&&xmlhttp.status==200){ 
    document.getElementById("content").innerHTML=xmlhttp.responseText; 
    } 
} 
xmlhttp.open("GET","data/"+id+".html",true);xmlhttp.send(); 
} 

有一個}太多。另外,在函數關閉後,您應該添加一個;之前xmlhttp.open()

最後,我沒有看到那裏的匿名函數。它從未被執行或引用。你確定你粘貼了正確的代碼嗎?