我有以下代码,我使用块ui,但它没有阻止page.i我正在使用ajax调用来获取用户控制结果(局部视图)加载到div中的div。在ajax调用我想阻止使用blockui的完整页面。
$('#btnGO').click(function() {
if (validate()) {
alert("loading");
$.blockUI({ message: '<img src="/Content/images/ajax-loader.gif"/>' }); //this is not working
$.ajax({
type: "POST",
url: "/Controller/action/", //to get the partial view
async: false,
cache: false,
beforeSend: function() {
},
complete: function() {
alert("ajax complete event")
$.unblockUI();
},
data: $('#frmPassBook').serialize(),
error: function(xhr, status, error) {
$('#ErrorMessage').html(xhr.responseText);
$("#ErrorMessage").stop().show('slow');
$('#ui-widget').show();
$.unblockUI();
},
success: function(data) {
$("#aCBDetails").parent().show();
$("#divCBDetails").hide("blind");
$("#aCBDetails span:first").removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s");
$('#ui-widget').hide();
//loading html in div
$("#div").html(data);
if ($("#rbMain") != undefined) {
if ($("#rbMain").attr("checked")) {
$(".subTrId").hide();
$("#spSub").hide();
$("#spMain").show();
}
else {
$(".subTrId").show();
$("#spSub").show();
$("#spMain").hide();
}
} else {
$("#spSub").show();
$("#spMain").hide();
}
//unblocking after div is loaded with html
$.unblockUI();
}
});
} else {
$.unblockUI();
}
return false ;
});
答案 0 :(得分:1)
使用 baseZ 索引来阻止整个页面 例如
$.blockUI({
message: "<img src="/Content/images/ajax-loader.gif"/>",
baseZ: 9000,
css: {
top: ($(window).height() - 400) /2 + "px",
left: ($(window).width() - 400) /2 + "px",
width: "400px"}
});
答案 1 :(得分:0)
尝试使用jQuery的ajaxStart
和ajaxStop
方法。这些将使您能够在ajax调用启动时应用loader,并在结束时将其删除。