Chrome:未捕获SyntaxError:意外的input结束
在Google Chrome浏览器中加载我的网页时,在控制台中出现一个模糊的错误:
未捕获的SyntaxError:意外的input结束
我不知道是什么原因造成的。 我将如何去debugging这个错误?
这个特别的错误是关于V8的一个恼人的事实。 在大多数情况下,JavaScript以某种方式被破坏。 例如,缺less一个}
或类似的东西。
给出的例子,这也会产生“意外的input结束”
eval('[{"test": 4}') // notice the missing ]
但问题的根本原因似乎是所请求的JSONurl有一个text/html
的内容types ,显然Chrome尝试parsing为HTML,然后导致意外的input结束,因为包含的图像标签正在被parsing。
尝试将Content-Type设置为text/plain
我认为它应该解决问题。
尽pipe如此,V8可以做的更好的工作,告诉一个确切的input意外结束。
尝试Mozilla的Firebug – 它会显示失踪的位置}
。
看到我的情况下另一个类似的问题 :
在我的情况下,我试图parsing一个空的JSON:
JSON.parse(stringifiedJSON);
换句话说,发生了以下事情:
JSON.parse("");
当我在JavaScript代码中省略了右大括号字符( }
)时,出现此错误。 检查你的大括号是否平衡。
对于logging,任何人试图find这个错误的各种原因。 一个空的HTML5数据属性
data-mydata = ''
也导致错误。 您应该检查数据值是否为空string,而不包含属性。 不用说,这主要与脚本生成的HTML有关。
我的问题是,我正在做$ .ajax与dataType: "json"
的POST请求返回一个HTTP 201(创build),没有请求正文。 解决方法是简单地删除该键/值。
JSHint擅长查找丢失的括号或语法错误的位置。
此错误的另一个原因:如果您的API有意无响应正文响应,但响应与200 OK
状态代码而不是204 No Content
状态代码。 当没有内容时,一些JavaScript库可能对意外的内容types没有反应,所以请使用正确的状态码!
将会有一个明显的支架造成错误。 我会build议打开页面firfox->打开firbug和检查控制台,它会显示丢失的一个。 检查截图
使用ui bootstrap指令来处理angularjs – uib-datepicker时,遇到类似的问题,当按am / pm切换。
(未知)事件处理程序中的错误:SyntaxError:JSONinputangular度timepicker的意外结束
原来是因为插件'Trans-over' (当它被点击时翻译一个单词)。 也许我的回答会帮助别人,因为我在互联网上没有发现任何东西。
由于这是一个asynchronous操作, onreadystatechange
可能会在值被加载到responseText之前发生,请尝试使用window.setTimeout(function () { JSON.parse(xhr.responseText); }, 1000);
看看错误是否持续? BOL