【问题标题】:Cannot get proper json response from my simple nodejs server无法从我的简单 nodejs 服务器获得正确的 json 响应
【发布时间】:2016-06-08 18:53:52
【问题描述】:

服务器:云服务器,Ubuntu 15.04 x64。 nginx已安装监听80端口。

SERVER 程序:使用 NodeJS 编写,简单地以 json 格式响应。像 { msg : "done" }

客户端(使用 React 和 JQuery 的 HTML 页面):简单地向服务器请求 json 数据。

问题出在客户端

// 1)
this.serverRequest = $.get({url:'https://api.github.com/users/octocat/gists', success:function(ret) {
// 2)
//this.serverRequest = $.get({url:'http://my_server_ip_address:7534/test', success:function(ret) {
      alert("ok done");
    }.bind(this), error:function(e) {
      alert("Error : " + e);
    }.bind(this)});

我对 1) 请求没有任何问题。我确实收到了一些数据。 但是对于 2) 请求,会调用 'error' 函数并执行 'alert('Error :' + e);'仅显示“错误:[object Object]”。它没有显示任何有用的信息..

所以我认为我的 nodejs 服务器程序有问题,我继续寻找答案。我想我会尝试所有可能的答案..

1) 设置 iptable 接受端口 7534。 2) 让 nodejs 服务器监听 0.0.0.0 3) 使用 res.json().. res.jsonp()

如果我尝试使用 Chrome,我可以看到 {msg : "done"}。所以我猜我的 nodejs 服务器可以工作。

【问题讨论】:

  • 接口是否使用https?您是否在 JavaScript 控制台 (F12) 中看到任何错误?
  • 首先,您会收到错误消息Error: [object Object ] ,因为它是 js 中的基类型转换。其次,在 nginx 中可能会安装防火墙,但不确定,例如您在 Chrome 中收到了正确的数据。收到错误数据时使用什么浏览器
  • 不,它确实使用 https。它使用http。
  • blex :不,它确实使用 https。它使用 http。控制台中没有显示错误。 Dmitry :所有浏览器都正确接收数据。我使用 Chrome 打开包含 javascript 代码的客户端 html 文件。
  • Error : [object Object] 因为 e 是一个对象。而{msg : "done"} 不是 json 它是一个对象。

标签: javascript jquery json reactjs


【解决方案1】:

好的,按照@Juven_v 的回答......我认为“对象”是错误对象。而且我可以通过console.log(e)看到错误信息。

以下是我找到的解决方案的摘要: 1)当服务器程序响应时,将标头**Access-Control-Allow-Origin与值*。

我正在使用 nodeJS 和 express 所以代码是

res.header('Access-Control-Allow-Origin', '*');

并且客户端使用 url 请求。 我用的是 JQuery,代码是

$.get({ url: "http://address!!!!", type: "GET", success: function(result) { console.log("yay"); console.log(result); }, error: function (err) { console.log(err); }, });

如果上面的客户端代码不起作用,那么尝试添加'dataType: "json"'

2) 如果我在服务器程序中添加以下代码.. res.header('Access-Control-Allow-Headers', 'Content-type');

那么客户端请求必须有 //contentType: "application/json",

参考: How does Access-Control-Allow-Origin header work?

jQuery AJAX to node server throws net::ERR_CONNECTION_REFUSED

net::ERR_CONNECTION_REFUSED Error jQuery ajax node.js

谢谢大家!!!!

【讨论】:

    【解决方案2】:

    查看错误消息。代替alert(e) 使用console.log(e),查看对象e 的属性。

    【讨论】:

    • 啊……伙计。我为什么不首先检查控制台..(我不知道如何检查)是的,有评论。净::ERR_CONNECTION_REFUSED。嗯...现在我需要配置我的服务器设置。我还不知道怎么做=P 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2016-01-19
    • 2019-08-20
    • 2012-12-29
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多