在Meteor中将数据从服务器发送到客户端
我想获取网页的内容,在服务器端进行一些处理(以避免在客户端遇到同源安全问题),然后将结果发送给客户端显示 我写了一个Meteor方法来帮助获取数据,如下所示:在Meteor中将数据从服务器发送到客户端,meteor,Meteor,我想获取网页的内容,在服务器端进行一些处理(以避免在客户端遇到同源安全问题),然后将结果发送给客户端显示 我写了一个Meteor方法来帮助获取数据,如下所示: Meteor.methods( { getURL: function(url_l){ console.log("Request: "+url_l) // var httpResult = HTTP.get(url_l){}
Meteor.methods(
{
getURL: function(url_l){
console.log("Request: "+url_l)
// var httpResult = HTTP.get(url_l){}
// return httpResult.data.response;
var response = HTTP.get(url_l)
var status = response.statusCode
var content = response.content
console.log(status)
console.log(content)
return content
}
});
不幸的是,返回不起作用
除了创建数据库条目之外,我想不出将这些数据传递回客户端的方法。我得到一个“未定义”的回报 更新 我还尝试了异步回调:
Meteor.methods(
{
getURL: function(url_l){
console.log("Request: "+url_l)
// var httpResult = HTTP.get(url_l){}
// return httpResult.data.response;
var response = HTTP.get(url_l, function(err,res){
if(err)
console.log(err)
var status = res.statusCode
var content = res.content
console.log(status)
console.log(content)
return content
});
}
});
只是澄清一下问题-无论我使用的是同步还是异步HTTP回调,当我这样做时:
//AUtofetch
a = Meteor.call("getURL",url_l)
console.log(a)
我得到一个未定义的
The url they entered is: http://shaunak.de
siteace.js:115 undefined
您确定在返回请求之前已完成get请求吗 通常,您必须将回调设置为HTTP.get以确保请求已完成: 来自文档:
HTTP.get(url, [callOptions], [asyncCallback])
尝试:
在按照答案中的建议多次尝试解决这个问题之后,我意识到简单地返回整个HTTPGET函数会更容易 我定义了一个Meteor方法,getUrl将请求url作为参数:
Meteor.methods(
{
'getURL': function(url_l){
console.log("Request: "+url_l)
return HTTP.get(url_l)
}
我通过这个电话访问了它:
Meteor.call("getURL",url_l,{},function(err,res){
if(err){
console.log('Error: '+err);
}
if(!err){
console.log('Response: '+res);
}
});
这成功地避免了浏览器中单源策略所面临的问题 当你说:“不幸的是,回报不起作用。”会发生什么?你有错误吗?空对象?是的,客户端代码是什么样子的,以及在各种控制台中输出的是什么类型的东西。日志?我在返回时得到一个“未定义的”。这没有帮助,因为在客户端我仍然得到一个未定义的对象。您在服务器端有结果吗?
Meteor.call("getURL",url_l,{},function(err,res){
if(err){
console.log('Error: '+err);
}
if(!err){
console.log('Response: '+res);
}
});