У меня есть веб-проект MVC. В cshtml странице проекта, у меня есть код Ajax, как показано ниже: -переменная результата не accessbile в HtmlHelper внутри Ajax success
$.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 Сериализованный объект, который имеет два данных - членов Ассоциации Отчет и маркер доступа. В функции успеха Ajax предупреждение может получить доступ к результату. AccessToken и печатает его правильно. Однако, когда я пытаюсь получить результат result.AccessToken внутри функции Html.PowerBIReportFor(), на странице появляется сообщение об ошибке «Результат имени не существует в текущем контексте».
Может ли кто-нибудь помочь мне с этим?
Что вы должны помнить, так это то, что вызов на Html.PowerBIReportFor() отображается ** на сервере **. Он не будет знать JavaScript на вашей странице. Я не знаком с PowerBIReportFor(), но один из них - загрузить отчет в переменную javascript, а затем выполнить вызов AJAX для токена доступа. Если это успешно, поместите отчет в свой документ, а затем установите атрибут powerbi_access_token, используя JQuery.attr() –
Спасибо JohnMorgan. – Srikant