服务器:云服务器,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服务器可以工作。
答案 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 If the above client code does not work, then try to add 'dataType: "json"'
$.get({
url: "http://address!!!!",
type: "GET",
success: function(result) {
console.log("yay");
console.log(result);
},
error: function (err) {
console.log(err);
},
});
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
谢谢大家!!!!