2017-05-28 164 views
0

您好:我让我的脚湿与平均堆栈。所以我使用Angular连接到api.js文件,该文件与我的mongodb数据库连接。不过,我收到以下错误:这是在错误中引用如何解决:意外标记<在JSON在位置0

ERROR SyntaxError: Unexpected token < in JSON at position 0 
    at JSON.parse (<anonymous>) 
    at Response.Body.json (http.es5.js:800) 
    at MapSubscriber.project (post.service.ts:19) 
    at MapSubscriber._next (map.js:77) 
    at MapSubscriber.Subscriber.next (Subscriber.js:89) 
    at XMLHttpRequest.onLoad (http.es5.js:1229) 
    at ZoneDelegate.invokeTask (zone.js:424) 
    at Object.onInvokeTask (core.es5.js:4140) 
    at ZoneDelegate.invokeTask (zone.js:423) 
    at Zone.runTask (zone.js:191) 

post.service.ts文件如下:

import { Injectable } from '@angular/core'; 
import { Http } from '@angular/http'; 
import 'rxjs/add/operator/map'; 

@Injectable() 
export class PostService { 

    result: any; 

    constructor(private _http: Http) { } 

    getPosts() { 
    return this._http.get("/api/posts") 
     .map(result => this.result = result.json()); 
    } 

    getPost(id) { 
    return this._http.get("/api/details" + id) 
     .map(result => this.result = result.json()); 
    } 

} 

以下是我的api.js文件。即使控制台也不会登录该帖子。

router.get('/details/:id', function(req, res) { 
    console.log('Requesting post'); 
    post.findById(req.params.id) 
     .exec(function(err, post) { 
      if (err) { 
       console.log('Error getting the post'); 
      } else { 
       res.json(post); 
       console.log(post); 
      } 
     }); 
}); 

我不知道我在哪里错了。我会很感激任何指导。

+0

你在哪里得到这个错误?在Chrome控制台中输入 – Aravind

+0

。然而,当我试图拉出所有帖子时,我没有得到那个错误;只有当我尝试请求单个帖子时 – Nosail

+0

您期望返回JSON的内容实际上是返回HTML,因此将<<作为第一个字符。这可能是托管该API的服务器上的标准错误页面,可能是4xx或可能是5xx。所以服务器上的代码可能会失败,或者路线错误。您将能够通过检查浏览器开发工具中的网络选项卡来查看返回结果。或添加'。做(响应=>的console.log(response.text()))''你.MAP()' –

回答

1

你的API缺少一些部分,假设你发送请求到not found文章或server error,然后你没有发送任何或错误的HTML到客户端。所以要尽量将消息发送到客户端,如:

if (err) { 
    console.log('Error getting the post'); 
    res.status(500).json({error: err.message, errorCode: /*some number code*/ 1101}); 
} else { 
     /* logic for not found maybe */ 
     // and logic for result 
     res.json(post); 
     console.log(post); 
} 

和URL应该是:get("/api/details/" + id)

+0

是的..谢谢,我固定的网址..这是我要去哪里错了 – Nosail

+0

你可以更新您的API作为我上面的例子,它可以防止未来的问题 –

相关问题