首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular $http.get“未捕获SyntaxError:意外标记)”没有文件引用,更不用说行号了

Angular $http.get“未捕获SyntaxError:意外标记)”没有文件引用,更不用说行号了
EN

Stack Overflow用户
提问于 2014-04-29 10:56:12
回答 3查看 1.6K关注 0票数 5

在这件事上我已经束手无策了。我在我的应用程序中看起来很随意的地方得到了这个错误。Raven从几十个地方报告了它们,但我只能在本地复制几个。在我看来,这个问题与JSON响应的解析有关,但响应是有效的。

在我的天使服务中。

代码语言:javascript
复制
...
getThread: function(id, success, error) {
    $http.get('/message/'+id).success(function(data){
        success(data);
    }).error(error);
}
...

在我的Express控制器中...

代码语言:javascript
复制
...
res.json(mssgs);
...

下面是一个示例响应。

代码语言:javascript
复制
[
  {
    "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的请求头...

代码语言:javascript
复制
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,也没有任何代码语法问题。

EN

回答 3

Stack Overflow用户

发布于 2014-11-14 06:11:44

因为我不知道你的确切情况,所以我不能提供确切的答案。然而,这是我的尝试。

我看到您的服务没有返回任何内容,而是在其中处理成功和错误函数。

代码语言:javascript
复制
getThread: function(id, success, error) {
    $http.get('/message/'+id).success(function(data){
        success(data);
    }).error(error);
}

  1. 你的错误(Error)是否正确?我假设你正在传递错误函数作为一个参数,但是我认为推荐使用error
  2. This和success(data)之间的不一致。我认为你应该改变你的服务只返回承诺,并不处理任何事情。所以,它应该看起来像这样。

返回:函数(Id){getThread $http.get('/message/'+id);}

然后,您的控制器处理成功和错误,以便您可以看到所有成功消息和错误消息。因此,控制器将具有如下代码

MyService.getThread(id).then( function(data) {....},function(error) {....} }

将数据处理逻辑放在控制器中会给调试带来更大的困难。

我建议您在控制器中处理http数据,而不是在服务中。

票数 1
EN

Stack Overflow用户

发布于 2014-11-18 18:37:13

  • 您的错误似乎与某个应用程序解析函数有关,您的示例响应头显示为“JSon /json;

鉴于此,看起来您不需要使用任何解析函数,缺少一些东西。

如果您不能总是重现它,我将启用记录网络调用,这样您就可以看到检索准确的响应给出了麻烦。

票数 1
EN

Stack Overflow用户

发布于 2014-11-20 03:34:18

您是否将null作为id传递给

代码语言:javascript
复制
getThread: function(id, success, error) {
    $http.get('/message/'+id).success(function(data){
        success(data);
    }).error(error);
}

这将在解析消息(‘/$http.get/’+)时出现语法错误。

在$http调用之前插入null测试,并等待命中它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23354634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档