【发布时间】:2016-10-25 12:31:53
【问题描述】:
我有一个 MVC 网络项目。在项目的cshtml页面中,我有一个Ajax代码如下:-
$.ajax({
type: 'POST',
dataType: 'json',
cache: false,
contentType: false,
processData: false,
url: '@Url.Action("Report", "Report")',
data: data,
success: function (result) {
if (result) {
alert(result.AccessToken); // ----> result.AccessToken is accessible here
$("#load-report").html(@Html.PowerBIReportFor(m => m.Report, new { id = "pbi-report", style = "height:68vh", powerbi_access_token = result.AccessToken })); // ----> result.AccessToken is not accessible here
}
else {
alert("server Error: Not able to load report, please try again");
}
},
error: function () {
alert("Error in uploading the data");
}
});
对 Ajax 调用的响应是一个 JSON 序列化对象,它有两个数据成员 - Report 和 AccessToken。在 Ajax 的成功函数中,alert 能够访问 result.AccessToken 并正确打印它。但是,当我尝试访问 Html.PowerBIReportFor() 函数中的 result.AccessToken 时,页面显示错误消息“当前上下文中不存在名称结果”。
谁能帮我解决这个问题?
【问题讨论】:
-
您必须记住的是,对 Html.PowerBIReportFor() 的调用是在服务器上呈现的。它将不了解您页面上的 JavaScript。我不熟悉 PowerBIReportFor() 但一种选择是将报告加载到 javascript 变量中,然后为访问令牌执行 AJAX 调用。如果成功,将报告输出放入您的文档中,然后使用 JQuery.attr() 设置 powerbi_access_token 属性
-
谢谢约翰摩根。
标签: javascript jquery ajax powerbi