Javascript Ajax成功内部HtmlHelper中的结果变量不可访问
我有一个MVC网络项目。在项目的cshtml页面中,我有一个Ajax代码,如下所示:-Javascript Ajax成功内部HtmlHelper中的结果变量不可访问,javascript,jquery,ajax,powerbi,Javascript,Jquery,Ajax,Powerbi,我有一个MVC网络项目。在项目的cshtml页面中,我有一个Ajax代码,如下所示:- $.ajax({ type: 'POST', dataType: 'json', cache: false, contentType: false, processData: false, url: '@Url.Action("Report", "Report")', data: data
$.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的成功函数中,警报能够访问result.AccessToken并正确打印它。但是,当我尝试访问Html.PowerBIReportFor()函数中的result.AccessToken时,页面显示一个错误,表示“名称结果在当前上下文中不存在”
有人能帮我吗?@Html.PowerBIReportFor(m=>m.Report,new{id=“pbi Report”,style=“height:68vh”,powerbi\u access\u token=Model.AccessToken})
PowerBIReportFor方法获取来自控制器的模型对象。模型对象应该包含报告(Microsoft.PowerBI.Api.V1.Models.Report)和AccessToken(字符串),以便该方法使用信息动态构建div元素。生成属性
如果从控制器加载视图,则此操作可以正常工作。但是在我的例子中,我只想将报告加载到当前视图中。如果我加载局部视图,整个布局将再次加载
我最终解决了这个问题,我自己在ajax成功事件中从结果对象的内容构建了div元素。@Html.PowerBIReportFor(m=>m.Report,new{id=“pbi Report”,style=“height:68vh”,powerbi\u access\u token=Model.AccessToken})
PowerBIReportFor方法获取来自控制器的模型对象。模型对象应该包含报告(Microsoft.PowerBI.Api.V1.Models.Report)和AccessToken(字符串),以便该方法使用信息动态构建div元素。生成属性
如果从控制器加载视图,则此操作可以正常工作。但是在我的例子中,我只想将报告加载到当前视图中。如果我加载局部视图,整个布局将再次加载
我最终通过在ajax成功事件中从Result对象的内容构建div元素解决了这个问题。您必须记住的是,对Html.PowerBIReportFor()的调用是在服务器上呈现的。它将不了解您页面上的JavaScript。我不熟悉PowerBIReportFor(),但是一个选项是将报告加载到javascript变量中,然后对访问令牌执行AJAX调用。如果成功,请将报告输出放入文档中,然后使用JQuery.attr()设置powerbi\u access\u令牌属性。感谢JohnMorgan。您必须记住的是,对Html.PowerBIReportFor()的调用是在服务器上呈现的。它将不了解您页面上的JavaScript。我不熟悉PowerBIReportFor(),但是一个选项是将报告加载到javascript变量中,然后对访问令牌执行AJAX调用。如果成功,请将报告输出放入文档中,然后使用JQuery.attr()设置powerbi\u access\u令牌属性。