Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获的语法错误:意外标记<;:_Javascript_Jquery_Opencart - Fatal编程技术网

Javascript 未捕获的语法错误:意外标记<;:

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: } 为什么会这样 编

我有一家露天购物车商店。在本地,上传图像不会出现问题。在网上,它只在图像非常小的情况下工作。如果我上传一幅图像,比如300kb,上传旁边的加载gif会一直旋转,我会得到错误:

ajaxupload.js:

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攻击
  • 它继承执行上下文及其调用的范围
如果需要支持旧的IE版本,也不需要使用eval()。您可以使用优秀的JSON库:

这将为你提供
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相比效率有多高或低。