Javascript 未捕获的语法错误:意外标记<;:
我有一家露天购物车商店。在本地,上传图像不会出现问题。在网上,它只在图像非常小的情况下工作。如果我上传一幅图像,比如300kb,上传旁边的加载gif会一直旋转,我会得到错误: ajaxupload.js:Javascript 未捕获的语法错误:意外标记<;:,javascript,jquery,opencart,Javascript,Jquery,Opencart,我有一家露天购物车商店。在本地,上传图像不会出现问题。在网上,它只在图像非常小的情况下工作。如果我上传一幅图像,比如300kb,上传旁边的加载gif会一直旋转,我会得到错误: ajaxupload.js: Line 609: if (response) { Line 610: response = eval("(" + response + ")"); Line 611: } else { Line 612: response = {}; Line 613: } 为什么会这样 编
Line 609: if (response) {
Line 610: response = eval("(" + response + ")");
Line 611: } else {
Line 612: response = {};
Line 613: }
为什么会这样
编辑:
我做了console.log(response),你是对的,返回的是404页面的HTML。但是它怎么可能太大呢?如果图像大小为100kb,它就可以工作,但是如果图像大小为130kb,它就不能工作
为什么我被否决了 从错误中,我认为您的响应不是有效的JSON。 顺便说一句,eval是邪恶的,所以最好使用
JSON.parse
您可以在此处检查您的JSON:
编辑:有人问为什么eval是邪恶的,下面是一些原因
- 它比JSON.parse慢,因为它实际上启动了一个编译器
- 如果操作不正确,最终可能导致XSS攻击
- 它继承执行上下文及其调用的范围
这将为你提供
JSON.parse
对旧IE的支持。尝试在该错误之前重写该行。。(不要复制并粘贴它)。。有时有效您的Post请求是404,因此响应是不可解析的。看起来您的URL在查询变量中有未编码的/
s。确保使用encodeURIComponent()
或其他一些函数来确保url正确转义不要使用eval
。为什么你认为你需要它?我猜如果图像太大,你会得到一个包含HTML而不是JSON的服务器错误响应(404)。执行console.log(response)
或检查HTTP请求。Frits,我没有编写ajaxupload.js代码。它与opencart一起提供。Bergi,我做了console.log(响应),你是对的,返回的是404页面的HTML。但是它怎么可能太大呢?如果图像大小为100kb,它可以工作,但如果图像大小为130kb,它就不能工作。只要您处理的是可信输入(这很可能是上传程序处理服务器响应的情况),eval就没有任何问题。如果您需要支持IE7,它也可能是您唯一的选择。大多数盲目模仿“不使用eval”的人根本不知道他们在说什么。+1,虽然斜杠不需要在查询字符串中转义,但为什么它可以处理小文件(100kb或更小),而它会对超过130kb的文件抛出错误?文件名几乎相同(1-130kb.jpg和1-100kb.jpg)?发送较小文件时,请检查控制台,查看请求的发送位置,并将其与较大文件请求中的发送位置进行比较。404错误意味着找不到文件,意味着您指向的url不存在。@Cris:您的服务器处理它们的方式不同,因此您可能需要检查负责的PHP代码。有没有可能是故意用404回答的?你能解释一下原因吗?不,这个语法错误是因为eval
不是由代码引起的。哇,只是哇。这让我想起了我在编程学校的第一年,我写了一些东西,比如:if($test==true){//do nothing}或者{//code here}
programming是一门科学,你不必依赖尝试“因为它们有时会起作用”哦。。那好吧。。。我想没有必要再进一步了。。如果你看不到任何明显的原因,那将是第一件要尝试的事情。如果你需要支持IE7,ajaxupload.js很可能就是这样,那么eval几乎是你唯一的选择。此外,正如OP所述,这是第三方代码。最后,如果你打算建议某人避免使用某个特定的函数,比如eval,你应该提供原因。请参阅我的答案。我回答了这两个问题:为什么eval是邪恶的,以及如何在旧IE中使用JSON.parse。您知道Crockford的JSON库在不支持JSON.parse的地方使用eval
,对吧?不。这取决于您使用的版本:还有json\u parse.js
和json\u parse\u state.js
。这些版本不依赖eval()。此外,使用此库可以让您养成良好的习惯,因为从现在起您将使用正确的语法。True。我怀疑大多数人使用json_parse.js。json2.js很可能是最常见的JSON对象polyfill。我想知道json_parse与json2.js相比效率有多高或低。