У меня есть веб-приложение, в котором одним нажатием кнопки выполняется куча работы на сервере.Эта работа инициируется вызовом ajax, и перед этим вызовом я отображаю диалоговое окно jquery ui, содержащее анимированный GIF-файл, чтобы пользователь знал, что происходит.Как только работа завершена, возвращается вызов ajax и диалог закрывается.У меня проблема в том, что в IE 7/8 диалог никогда не открывается.Если я удаляю код, который закрывает диалоговое окно из обратного вызова, то после завершения вызова диалоговое окно отображается, что не очень полезно.
Вот определение моего диалога:
$("#dgImporting").dialog({
autoOpen: false,
width: 250,
height: 125,
modal: true,
resizable: false,
position: 'center',
closeOnEscape: false,
open: function (event, ui) { $(".ui-dialog-titlebar-close").hide(); }
});
И вот метод, который я использую для выполнения моего вызова ajax:
function executeImport(importData) {
importData.carriers = JSON.stringify(selectedCarriers);
$("#dgImporting").dialog("open");
$.ajax({
type: "POST",
traditional: true,
url: "import/execute",
async: false,
data: JSON.stringify(importData),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
$("#dgImporting").dialog("close");
}
});
Для возврата вызова ajax может потребоваться до минуты, но при такой конфигурации я никогда не вижу диалоговое окно.Если я удаляю ("#dgImporting"). Dialog ("закрыть");из обратного вызова я увижу диалоговое окно, но только после завершения вызова ajax, даже если я вызываю диалоговое окно («open») до вызова ajax.
В Firefox и Chrome это работает, как и ожидалосьдействительно нужно, чтобы это работало в IE.У любого гуру JavaScript есть идеи, что я могу сделать?