ASP.NET MVC 应用程序。
只有IE有问题。
请考虑以下 2 个函数:
function refreshParameters() {
doRefresh('#loading-production-parameters', '#partial-rows-parameters', '@VirtualPathUtility.ToAbsolute("~/home/ProductionParameters")');
}
//
//
//
function refreshTotals() {
doRefresh('#loading-production-totals', '#partial-rows-totals', '@VirtualPathUtility.ToAbsolute("~/home/ProductionTotals")');
}
脚本和事件处理程序的开头:
$(function () {
//
//Init
//Initial Tasks
//
refreshParameters();
refreshTotals();
//
// Events
//
$('#yla-debug').click(function (e) {
refreshParameters();
refreshTotals();
});
奇怪的是,refreshParameters
和refreshTotals
在页面加载时运行。
但是在单击事件处理程序上,他们没有。
如果我在事件处理程序中放置警报,它会正常触发,Firebug 中的控制台也没有显示任何错误。
有什么想法吗?
附言:使用该事件的元素的 html 标记:
<div id="yla-debug" class="panel panel-default">
<div class="panel-heading clearfix">
<h3 class="panel-title pull-left">Daily Production Data for <span style="font-weight: bold;">@ViewBag.SiteName</span> </h3>
<span style="font-weight: normal; background-color: #000080;" class="badge pull-left">(Autoupdate every 30 min.)</span>
<div class="pull-right" id="loading-production-parameters">
<span>Refreshing</span>
<img src="~/Content/ajax-loader-bar1.gif" />
</div>
</div>
<div class="panel-body">
<table id="partial-rows-parameters" class="table table-striped table-hover">
</table>
</div>
<div class="panel-footer">
<span>Last Refresh: </span>
<span id="last_refresh_parameters"></span>
</div>
</div>
附加信息 #1:
即使我将选择器替换为更通用的选择器,它也不起作用。 $('body), $('img')
....
附加信息 #2:
从事件调用时不运行但在启动时运行的doRefresh
方法:
function doRefresh(what, dataContainer, action) {
$(what).show();
$.ajax({
url: action,
dataType: 'html',
success: function (data) {
$(dataContainer).html(data);
$(what).hide();
}
});
只是我的愚蠢...
这解决了我的问题:
$.ajaxSetup({
cache: false
});
IE 以不同的方式执行许多操作,在缓存 AJAX 请求时也是如此。