2011-06-22 52 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()

最后,我没有看到那里的匿名函数。它从未被执行或引用。你确定你粘贴了正确的代码吗?