Sails.js将 https.request 中返回的 json 对象发送到视图
Sails.js Sending json object returned in https.request to the view
只是在学习帆.js所以对我放轻松。
我查询了一个 XML 服务,并使用 xml2js
成功对其进行了 json化
var req = https.request(options, function(res) {
var xml = '';
res.on('data', function(chunk) {
xml += chunk;
});
res.on('end', function () {
var result = parseString(xml, function (err, result) {
console.log(JSON.stringify(result)); // Position 1
});
return result;
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.write(data);
var result = req.end();
console.log('Result: ' + JSON.stringify(result)); // Position 2
res.view({ message : 'hello', result : result });
视图加载正常,<%= message %>
输出hello
。伟大。
位置 1 控制台.log 正在返回字符串化的 json 对象 - 太好了。
位置 2 共.log正在返回Result: true
- 不好。
我需要能够将该 json 数据获取到我的视图中进行分析。我该怎么做?
看起来您假设调用req.end()
会给您上面开始的https.request
的响应。 这有几个问题:
-
req.end()
用于完成对打开的请求的写入,而不是获取响应。 根据文档,返回值未指定。 https.request
调用是异步的;即使req.end()
按您希望的方式工作,在您调用它时也不会收到响应。
解决方案是将您的响应代码(即您的res.view
)放入您已经编写的end
事件的处理程序中。 我还建议重构代码以对远程请求/响应使用不同的变量名称,以便它们不会与控制器操作中的req
和res
变量发生冲突。 然后整个事情将是这样的:
myAction: function (req, res) {
// Not sure how you're setting options, so just an example
var options = {url: 'http://example.com', ...}
var request = https.request(options, function(response) {
var xml = '';
response.on('data', function(chunk) {
xml += chunk;
});
response.on('end', function () {
var result = parseString(xml, function (err, result) {
return res.view({ message : 'hello', result : JSON.stringify(result)});
});
});
});
request.on('error', function(e) {
console.log('problem with request: ' + e.message);
res.serverError(e);
});
}
您还可以考虑使用类似 Request 模块的东西来简化外部请求;这将使您不必为 data
和 end
编写事件处理程序。
如果你想json
传递给某个javascript变量:
var clientJsonVar = <%- JSON.stringify(serverSideJson)%>
相关文章:
- jQuery匹配JSON对象的部分文本
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 用javascript从列表对象(JSON的)构建diffrent选项卡
- php请求带有多个对象json-jquery
- AngularJS,过滤器:如何将一个巨大的对象(JSON)变成一个数组
- 动态属性对象 - JSON
- JavaScript 对象 (JSON) 中的动态设置值
- 从数组查询获取对象 JSON 值时出错
- 使用jQuerygetJSON将多维对象JSON转换为HTML
- 需要从 Angular JS 应用程序中的另一个 JSON 对象数组填充 JSON 数组的每个对象 JSON 对象数组
- 嵌套对象JSON排序JavaScript
- PHP在MySQL中保存来自Javascript的对象"JSON.stringify"通过Ajax
- 将JavaScript对象/ JSON转换为PHP数组
- JSON对象.JSON对象内部
- 访问对象的对象- JSON API
- 数组到对象JSON
- Message":"传入的无效对象(JSON数据格式化问题)