在这件事上我已经束手无策了。我在我的应用程序中看起来很随意的地方得到了这个错误。Raven从几十个地方报告了它们,但我只能在本地复制几个。在我看来,这个问题与JSON响应的解析有关,但响应是有效的。
在我的天使服务中。
...
getThread: function(id, success, error) {
$http.get('/message/'+id).success(function(data){
success(data);
}).error(error);
}
...在我的Express控制器中...
...
res.json(mssgs);
...下面是一个示例响应。
[
{
"id": 79,
"body": "test",
"senderArchived": false,
"recipientArchived": false,
"createdAt": "2014-04-17T01:44:46.762Z",
"updatedAt": "2014-04-17T01:44:46.762Z",
"RootMessageId": 69,
"SenderId": 164050,
"RecipientId": 154040,
"sender": {
"username": "boca",
"id": 164050,
"primaryMedium": null
},
"recipient": {
"username": "quimby",
"id": 154040,
"primaryMedium": {
"id": "186",
"type": "image",
"nativeURL": "https://domain/imageurl.jpg",
"mediumURL": "https://domain/imageurl.jpg",
"smallURL": "https://domain/imageurl.jpg",
"createdAt": "2014-04-21T15:52:10.927Z",
"updatedAt": "2014-04-21T15:52:10.947Z",
"CommentId": null,
"EventId": null,
"UserId": 154040,
"PostId": null,
"MessageId": null,
"MediaFolderId": null
}
},
"messageMedia": []
}
]在Chrome和Safari中,这都会导致错误“未捕获SyntaxError:意外的令牌)”
这是来自Chrome的请求头...
Remote Address:127.0.0.1:3001
Request URL:https://localhost:3001/message/69
Request Method:GET
Status Code:200 OK
Request Headers
Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,ja;q=0.6
Connection:keep-alive
Cookie:streamLoc=%7B%22distance%22%3A-1%2C%22locName%22%3A%22%22%7D; usePostLocation=yes; connect.sid=s%3AhX37rupUct2jut4yApN1GIH9.n5nPURTMXl5OKd46rMqeRc4bg1Q%2F%2Bky0El2r%2BcBvC8c; user=%7B%22id%22%3A154040%2C%22role%22%3A%7B%22bitMask%22%3A32%2C%22title%22%3A%22admin%22%7D%2C%22username%22%3A%22quimby%22%2C%22emailVerified%22%3Atrue%2C%22verified%22%3Atrue%7D
Host:localhost:3001
Referer:https://localhost:3001/messages
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
Response Headers
Connection:keep-alive
Content-Length:1115
Content-Type:application/json; charset=utf-8
Date:Tue, 29 Apr 2014 02:41:47 GMT
ETag:"485872145"
X-Powered-By:Express所有其他类似的问题都指向JSONP或实际的语法问题,但我没有使用JSONP,也没有任何代码语法问题。
发布于 2014-11-14 06:11:44
因为我不知道你的确切情况,所以我不能提供确切的答案。然而,这是我的尝试。
我看到您的服务没有返回任何内容,而是在其中处理成功和错误函数。
getThread: function(id, success, error) {
$http.get('/message/'+id).success(function(data){
success(data);
}).error(error);
}errorsuccess(data)之间的不一致。我认为你应该改变你的服务只返回承诺,并不处理任何事情。所以,它应该看起来像这样。返回:函数(Id){getThread $http.get('/message/'+id);}
然后,您的控制器处理成功和错误,以便您可以看到所有成功消息和错误消息。因此,控制器将具有如下代码
MyService.getThread(id).then( function(data) {....},function(error) {....} }
将数据处理逻辑放在控制器中会给调试带来更大的困难。
我建议您在控制器中处理http数据,而不是在服务中。
发布于 2014-11-18 18:37:13
鉴于此,看起来您不需要使用任何解析函数,缺少一些东西。
如果您不能总是重现它,我将启用记录网络调用,这样您就可以看到检索准确的响应给出了麻烦。
发布于 2014-11-20 03:34:18
您是否将null作为id传递给
getThread: function(id, success, error) {
$http.get('/message/'+id).success(function(data){
success(data);
}).error(error);
}这将在解析消息(‘/$http.get/’+)时出现语法错误。
在$http调用之前插入null测试,并等待命中它。
https://stackoverflow.com/questions/23354634
复制相似问题