无法从我的简单nodejs服务器获得正确的json响应

时间:2016-02-25 19:41:49

标签: javascript jquery json reactjs

服务器:云服务器,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);'仅显示'错误:[对象对象]'。它没有显示任何有用的信息..

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

确定关注@Juven_v的回答..我认为'对象'是错误对象。我能够通过console.log(e)看到错误消息。

以下是我发现的解决方案的摘要: 1)当服务器程序响应时,将标题** Access-Control-Allow-Origin放入值*。

我正在使用带有express的nodeJS,所以代码是

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

And the client requests with the url. I use JQuery and the code is

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

If the above client code does not work, then try to add 'dataType: "json"'

2) If I add the following code in the server program.. res.header('Access-Control-Allow-Headers', 'Content-type');

参考文献: 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

谢谢大家!!!!