Обратная передача asp.net с диалоговым окном jquery ajax и jquery

У нас есть метод на странице asp.net, который вызывается нажатием кнопки. Проблема в том, что метод требует много времени для обработки. Меня попросили, чтобы страница вызывала метод (или вызывала обратную передачу), а затем отображала диалоговое окно jquery.ui, которое сообщит пользователю, что этот процесс может занять много времени. Я смотрю на сериализацию формы asp.net и выполнение $.post(), но, честно говоря, я полностью зациклен на том, будет ли это вообще работать и как я могу предотвратить фактическую обратную передачу и просто отобразить диалог. Кто-нибудь имел какой-либо опыт в этом, который может дать мне несколько указателей?

Я нашел это http://dotnet.dzone.com/news/eliminating-postbacks-setting- но я не уверен, что это немного OTT. Статья немного затянута.

Надеюсь, кто-то может помочь.


person lloydphillips    schedule 03.12.2009    source источник
comment
Привет: Можете ли вы опубликовать свой фрагмент javascript здесь, чтобы мы могли на него взглянуть? Обычно я бы использовал явно метод $.ajax(), потому что он более гибкий. И процесс на стороне сервера может действительно занять много времени, поэтому улучшение только на стороне клиента может быть неэффективным.   -  person Michael Mao    schedule 03.12.2009


Ответы (2)


Это было бы проще, если бы вы могли использовать UpdatePanel (который в основном сводится к тому, как ASP.NET делает то, что вы рассматриваете, с помощью $.post(), но автоматически получает правильные вещи, специфичные для ASP.NET).

Затем вы можете сделать что-то простое: http://encosia.com/2008/10/04/using-jquery-to-enhance-aspnet-ajax-progress-indication/

person Dave Ward    schedule 03.12.2009
comment
К сожалению, я не могу использовать панель обновления. Это существующее приложение в Delphi.net не включает MS Ajax. :( - person lloydphillips; 04.12.2009

Вы можете отправить почтовый запрос через javascript (AJAX) без использования платформы ajax asp.net. Другими словами, сделайте это вручную. Ajax был бы идеальным в этом случае, потому что вы пытаетесь показать индикаторы загрузки на фронтенде, ожидая ответа от сервера.

Для этого вынесите логику из метода button_click и поместите ее на отдельную страницу (text.aspx см. ниже). Затем вы можете вызвать эту страницу следующим образом (используя JQuery):

$('#ProgressIndicator').show();
$.post("test.aspx", function(data){
  alert("Data Loaded: " + data);
  $('#ProgressIndicator').hide();
});

Если вы не можете использовать JQuery в своем проекте, см.: AJAX.

person JAKEtheJAB    schedule 08.12.2009