почему функция «ошибка» $.ajax выполняется, даже если запрос на вызов веб-метода выполняется успешно?

Я использую метод jquery ajax для вызова веб-метода при нажатии «промежутка». Этот веб-метод находится на одной из моих страниц aspx, и я вызываю его с главной страницы, используя следующий код.

 $(document).ready(function(){
     $("#btn").click(function() {
        $.ajax({   
              type: "POST", 
              url: "Default.aspx/removedata",
              data:"{}",
              contentType: "application/json; charset=utf-8",
              dataType: "json",  
              success:function(msg) {  
                   $("li#search").removeClass('current');
                   $("li#search").addClass('hide');
                   $("#tabnew").addClass('hide');
                   window.location="Result.aspx";       
              },
              error:function(xhr, status, error) {
                  alert("error");                       
                  //var err = eval("(" + xhr.responseText + ")");
                  // Display the specific error raised by the server 
                  //alert(err.Message);
                  console.log(xhr.statusText);
              }
          });
       });
    });

когда я нажимаю диапазон, я вижу, что веб-метод вызывается (путем отладки), но даже до того, как веб-метод начинает выполняться, я получаю предупреждение «ошибка» и вижу (пустая строка)< /strong> сообщение регистрируется в консоли firebug. Насколько я знаю, функция «ошибка» выполняется только в случае сбоя запроса ajax. Но я вижу, как выполняется веб-метод. Я не понимаю, почему функция ошибки выполняется даже тогда.

Может кто-нибудь, пожалуйста, помогите мне с этим.

Спасибо


person kranthi    schedule 18.08.2010    source источник
comment
Вы переписываете какие-либо URL-адреса?   -  person Aristos    schedule 18.08.2010
comment
нет, я не заставляю URL переписываться. На самом деле я просто удаляю некоторые данные, хранящиеся в сеансах в веб-методах, которые я вызываю.   -  person kranthi    schedule 18.08.2010
comment
Я вижу запрос, сделанный в firebug, но как только веб-метод завершает выполнение, запрос больше не появляется. Поэтому я не могу увидеть возвращенный статус/ответ. Я попробовал вызов ajax с другой страницы aspx, которая не унаследована от Главная страница Я вижу статус «200 ok», возвращаемый с ответом «{d:1}», где «1» — это значение, которое я возвращаю из веб-метода.   -  person kranthi    schedule 18.08.2010
comment
Я не понимаю еще одну вещь. Как только я нажимаю на диапазон, я получаю предупреждение с сообщением «ошибка» еще до того, как начинаю отлаживать выполнение веб-метода, и я также вижу, что значения сеанса удаляются после выполнения веб-метода.   -  person kranthi    schedule 18.08.2010


Ответы (1)


Обработчик error выполняется, если сценарий на стороне сервера возвращает код ошибки, отличный от 200. Вы можете использовать FireBug для проверить, что именно происходит под одеялом.

person Darin Dimitrov    schedule 18.08.2010
comment
Fiddler2 (fiddler2.com) также является очень полезным инструментом для точного определения того, что находится в HttpResponse, возвращенном из веб-сервис. - person mikemanne; 18.08.2010