gpt4 book ai didi

javascript - jsReport 如何使用AJAX GET请求动态获取数据?

转载 作者:行者123 更新时间:2023-12-03 03:44:07 27 4
gpt4 key购买 nike

我想使用 jsreport 在我的网站(asp.net core 应用程序)上动态生成一些报告,并且我在 Controller 中有一个返回 JSON 的方法,我想使用 jsReport 从那里获取数据来填充一份报告。

我将发布一些测试值。 Controller

public JsonResult testReport()
{
FileStream fs = new FileStream("path\\json.txt", FileMode.Open);

using (StreamReader r = new StreamReader(fs))
{
var model = r.ReadToEnd();
test json = JsonConvert.DeserializeObject<test>(model);


return Json(json);
}
}

[HttpGet]
public async Task<IActionResult> MyAction([FromServices] INodeServices nodeServices)
{
var result = await nodeServices.InvokeAsync<byte[]>
("./pdf");
HttpContext.Response.ContentType = "application/pdf";

string filename = @"report.pdf";
HttpContext.Response.Headers.Add("x-filename", filename);
HttpContext.Response.Headers.Add("Access-Control-Expose-Headers", "x-filename");
HttpContext.Response.Body.Write(result, 0, result.Length);
return new ContentResult();
}

以及页面上运行的实际脚本:

module.exports = function (callback) {
var jsreport = require('jsreport-core')();

jsreport.init().then(function () {
return jsreport.render({
template: {
content: 'template bla bla bla',
engine: 'jsrender',
recipe: 'phantom-pdf'
},
data: /* i don`t know how to get data from (/Home/testReport) */
}).then(function (resp) {
callback(/* error */ null, resp.content.toJSON().data);
});
}).catch(function (e) {
callback(/* error */ e, null);
});
};

我已经检查了硬编码和值,它有效,但在动态获取数据时遇到问题。

最佳答案

我成功地把这个卖掉了。问题是我尝试在服务器上运行客户端脚本,这实际上没有意义。因此,我通过在服务器上运行的脚本中发出 get 请求来修复它。最终结果:

module.exports = function (callback) {
var request = require("request");
var getResponse = null;

request.get({
url: '/Home/testReport',
json: true,
}, function (error, response, body) {
if (!error && response.statusCode == 200)
getResponse = body;
});

var jsreport = require('jsreport-core')();

jsreport.init().then(function () {
return jsreport.render({
template: {
content: 'template bla bla bla',
engine: 'jsrender',
recipe: 'phantom-pdf'
},
data: getResponse
}).then(function (resp) {
callback(/* error */ null, resp.content.toJSON().data);
});
}).catch(function (e) {
callback(/* error */ e, null);
});

};

关于javascript - jsReport 如何使用AJAX GET请求动态获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45483946/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com