【问题标题】:RESTful Get Request with Angular & NodeJS Express使用 Angular 和 NodeJS Express 获取 RESTful 请求
【发布时间】:2015-07-26 18:58:35
【问题描述】:

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

这是我的代码的 sn-ps:

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:unexpected end of data at line 1 column 1 JSON 数据

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

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

【问题讨论】:

  • 您是否在响应中回显或打印其他任何内容?一个原因可能是您的 JSON 格式错误。

标签: javascript angularjs node.js express


【解决方案1】:

您可以尝试发送 res.send('test')

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

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

不像成功,那么会给你一个完整的对象(带有'test' - 字符串作为res.data)

成功只会带给你数据;

然后会给你带来整个对象(状态等)..

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

希望对你有帮助

【讨论】:

  • 我刚刚尝试进行上述更改。直接链接有响应(测试),但角度请求没有收到任何响应(空)。
  • 路由器变量分配了什么?
【解决方案2】:

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

尝试改变服务器的样子

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

如果您查看开发人员工具的“网络”窗格,您应该能够看到原始响应。它应该类似于:

{"data" : "test"}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-31
    • 2021-01-04
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多