Я хотел заблокировать div для взаимодействия с пользовательским интерфейсом при вызове на стороне сервера и разблокировать его, как только поток программы вернется на сторону клиента.
Если я не включаю оператор разблокировки, он блокируется после возврата из процесса на стороне сервера. Кажется, что блокировка пользовательского интерфейса активируется после завершения функции щелчка. Поэтому он игнорирует блокировку, когда я выдаю операторы блокировки и разблокировки в одной и той же функции. Если это так? Тогда как я мог добиться желаемого результата. (т.е. блокировка экрана/элемента перед вызовом какого-либо процесса и разблокировка при возврате потока)
Ниже приведен мой пример кода:
$("#button").click(function () {
//$("#sidebar").block({
// message: '<h1>1Processing</h1>',
// css: { border: '3px solid #a00' }
//});
$.blockUI({
message: '<h1>2Processing</h1>',
css: { border: '3px solid #a00' }
});
var result = DoSomeServerSideProcessing();
//$("#sidebar").unblock();
$.unblockUI();
});
Дополнительная информация:
DoSomeServerSideProcessing() uses XmlHttpRequest()
для доступа к серверу. Что я не хотел бы переходить на вызов jQuery ajax, так как он проверен и зрелый блок кода и повторно используется из разных точек кода.
Пример кода:
function DoSomeServerSideProcessing()
{
var dllUrl=" ... "
var result = httpGet(dllUrl);
}
function httpGet(theUrl) {
var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', theUrl, false);
xmlHttp.setRequestHeader('Content-Type', 'text/xml');
xmlHttp.send(null);
var strHtml = xmlHttp.responseText;
xmlHttp = null;
return strHtml;
}
Обновлять:
Я попытался преобразовать XmlHttpRequest() в $.ajax(). Тем не менее, это не блокирует пользовательский интерфейс. Код ниже:
(Пробовал как с обработчиками beforeSend/complete, так и без них.
//$.blockUI();
//alert("before ajax call")
$.ajax({
url: theUrl,
type: "GET",
dataType: "text",
async: false,
beforeSend: function () {
$.blockUI();
},
complete: function () {
$.unblockUI();
},
success: function (result) {
strHtml = result;
//$.unblockUI();
}
});
//alert("after ajax call")