страница зависает при выполнении веб-метода

#asp.net #ajax #json #webmethod

#asp.net #ajax #json #вебметод

Вопрос:

Я работаю над ajax-webmethod (используя json) для сохранения данных в базе данных и выбора их при необходимости. Теперь всякий раз, когда я вызываю вебметод, во время обработки метода вся страница зависает, и со страницей ничего нельзя сделать.

Я хочу включить все, пока веб-метод вызывается из ajax, например, показывать загружаемое изображение до завершения веб-метода.

Мой код приведен ниже:

 function getvalues(id, tab, pageNo) {
    $.ajax({
        type: "POST",
        url: "default.aspx/LoadData",
        data: "{'id':'"   id   "','tab':'"   tab   "','pageNo':'"   pageNo   "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            if (msg.d.length > 0) {
                var dvComment = document.getElementById("Comments");
                dvComment.innerHTML  = msg.d;
            }  
        },
        async: true,
        error: function(xhr, status, error) {
            // alert(xhr.statusText);
        }
    });
}
  

Итак, теперь, когда он отображает HTML в DIV, страница все время зависает.

Ответ №1:

Чтобы показать загружаемое изображение, вы можете использовать ajaxStart метод, подобный этому:

 $("#loading").ajaxStart(function(){
    $(this).show();
});
  

Где #loading находится:

 <img id="loading" src="images/ajaxload.gif" alt="loading..." style="display:none"/>
  

Чтобы скрыть загружаемое изображение:

 $("#loading").ajaxComplete(function(){
   $(this).hide();
});
  

Комментарии:

1. большое вам спасибо за ваш ответ, и это решило мою проблему наполовину, но я хочу, чтобы на странице можно было щелкнуть, например, я могу прокручивать страницу во время выполнения веб-метода, или я должен иметь возможность Выбирать некоторый текст и т.д.

2. Также на моей странице есть функция таймера java script, которая будет вызываться через каждую минуту для обновления содержимого<span>, которое использует тот же json-ajax, вызывающий веб-м етод. Проблема существует, а также после того, как каждую минуту метод времени обновления вызывает страницу, которая снова зависает на какой-то мо мент. Пожалуйста, подскажите мне способ избавиться от этого уродливого поведения при выполнении веб-метода.

3. @tanweer это не уродливое поведение веб-методов. Вы должны отключить таймер после запуска ajax-запроса и повторно включить его в success и error delegates, чтобы другой запрос не запускался до завершения первого. Я думаю, что это наиболее вероятная причина, по которой ваша страница замедляется.