RESTful获取请求与Angular& NodeJS Express

时间:2015-07-26 09:17:32

标签: javascript angularjs node.js express

我只是关注教程并弄清楚如何在NodeJS中处理get请求。

以下是我的代码片段:

的NodeJS:

router.get('/test', function(request, response, next) {
    console.log("Received Get Request");
    response.jsonp({
        data: 'test'
    });
});

角:

$http.get("http://localhost:3000/test").
success(function(response) {
    alert("OK");
}).
error(function(response) {
    alert("FAIL");
});

如果我尝试直接访问@ localhost:3000/test链接,我就能正确收到JSON消息。但是当我使用angularJS $ http调用时,请求总是失败,我会在网络检查器中发现此错误(响应)

  

SyntaxError:JSON.parse:第1行第1列的意外数据结尾   JSON数据

原因是因为响应是空的,但在两种情况下响应代码都是200。

我已经尝试过寻找几个小时,但也许有人可以在这方面启发我?

2 个答案:

答案 0 :(得分:0)

你可以尝试发送 res.send('测试&#39)

然后在您的http请求中,您可以使用'然后'

$http.get("http://localhost:3000/test").then(function(res) {
      console.log(res);
})

与成功不同,那么会给你一个完整的对象(' test' - string as res.data)

成功只会带给你数据;

然后将为您带来整个对象(具有状态等)..

现在关于jsonp ..它用于覆盖json响应。你可以简单地使用' res.json({data:' test'})'它也应该对你有用..

希望有所帮助

答案 1 :(得分:0)

您在节点中使用jsonp,您可能不需要这样做。这会为响应添加额外的字符,因此JSON解析器无法解析(错误告诉您的是,JSON格式错误)

尝试将服务器更改为

response.json({
    data: 'test'
});

如果查看开发人员工具的“网络”面板,您应该能够看到原始响应。它应该看起来像:

{"data" : "test"}