我的代码如下:
var url = "http://www.telize.com/geoip";
HTTP.call("GET", url, function(err, res){
if (err){
console.log("HTTP call GET error: "+err);
} else {
var respJson = JSON.parse(res.content);
console.log("HTTP call GET response: "+JSON.stringify(respJson));
};
});
我在服务器和客户端上运行此代码。 在服务器上没有问题,我得到了JSON格式的信息响应。 在客户端,我有一个错误:“错误:网络”。
如何在客户端获取JSON响应? 怎么了?
此致 DP
答案 0 :(得分:2)
首先,客户端代码受Same Origin Policy (SOP)的约束。这就是为什么你不能做XHR跨域的原因,除非远程服务器实际上支持Cross-Origin Resource Sharing (CORS)。
在传统设置中,您可以使用JSONP或您的服务器作为代理来解决这个问题。
在Meteor上,您只需创建a method on the server即可为您提供请求。这样,它就是代表客户端代码执行请求的服务器。可以同步调用流星HTTP methods,以便您可以执行return
。
//On the server
Meteor.methods({
'remoteGet' : function(url,options){
return HTTP.get(url,options);
}
});
//On the client
Meteor.call('remoteGet','http://remoteurl.com/',{
//...options...
},function(error,response){
//if an error happened, error argument contains the details
//if the request succeeded, the response will contain the response of the server request
})
答案 1 :(得分:1)
答案 2 :(得分:0)
您只需要将您的逻辑包装在Meter.methods中。 (见流星文档)。这是进行客户端到服务器呼叫的“流星”方式。