我正在开发一个ASP.net项目,该项目使用了相当多的客户端Jquery脚本。在layout.cshtml页面中,我有一个Ajax调用,它返回有关登录用户的信息。我的应用程序中的所有页面都依赖于此信息。因此,我需要一种机制,以便在布局页面上的调用完成之前,我不会在各个视图中执行任何脚本。
通常我会使用jquery延迟,但这很困难,因为调用是在2个未连接的文件中(例如layout.cshtml和个人视图cshtml)。我能想到的其他选项是使初始调用同步,我不想做或有某种等待循环(例如setTimeout(checkVal,200),这两种解决方案都没有吸引我。
以下是我想要做的非常简单的样本。
Layout.cshtml
$(document).ready()
{
function LoadUserData()
{
return $.ajax({
type: "GET",
contentType: "application/json",
dataType: "json",
url: baseUrl + "/Account/GetUserMeta",
success: function (res) {
$("#userMetaData").data('meta', res);
}
});
}
}
示例视图(Index.cshtml)
$(document).ready()
{
function DoStuff()
{
//This may not be available yet
var meta = $("#userMetaData").data('meta');
}
}