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 – 它会显示失踪的位置}

http://getfirebug.com/

看到我的情况下另一个类似的问题 :

在我的情况下,我试图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