2010-10-04 4 views
1

У меня есть следующие JQuery, который не дают наиболее наглядный messsages ошибки ...Описательные сообщения об ошибках

url: 'server_page.aspx', 
type: 'POST', 
data: { intID:$(this).attr("id"), strState:"1" }, 
error: function() { alert('Error'); }, 
success: function() { } 

Как получить более описательные сообщения об ошибках, если это возможно?

EDIT:

Это полный JavaScript:

$ (документ) .ready (функция() { $ ("вход: Флажок") изменение (функция() { вар что = это;

if($(this).is(":checked")) { 
     $.ajax({ 
      url: 'favorite_on_off.aspx', 
      type: 'POST', 
      data: { strFavoriteID:$(that).attr("id"), strState:"1" }, 
      timeout: 1000, 
      error: function(xhr, status, error) 
      { 
       alert("values: strFavoriteID: " + $(that).attr("id") + " strState: " + "1"); 
       alert('Error: ' + status + '\nError Text: ' + error); 
      }, 
      success: function() { } 
     }); 
    } else { 
     $.ajax({ 
      url: 'favorite_on_off.aspx', 
      type: 'POST', 
      data: { strFavoriteID:$(that).attr("id"), strState:"0" }, 
      timeout: 1000, 
      error: function(xhr, status, error) 
      { 
       alert("values: strFavoriteID: " + $(that).attr("id") + " strState: " + "0"); 
       alert('Error: ' + status + '\nError Text: ' + error); 
      }, 
      success: function() { } 
     }); 
    } 
}); 

});

Это сообщения об ошибках:

значения: strFavoriteID: C: \ папка \ document.doc strState: 1

Ошибка: Ошибка Текст Ошибка: не определено

+0

Что вы ищете, чего не получаете? Кроме того, поскольку вы отправляете на страницу ASP.NET, есть некоторые переменные POST, которые необходимы для успешного POST, если вы не отключили их необходимость на странице ASP.NET. – Andrew

+0

Я просто получаю сообщение об ошибке вместо записи в базе данных. – oshirowanen

+0

Я обновил исходный вопрос, чтобы показать полный сценарий плюс сообщения об ошибках. – oshirowanen

ответ

3

Вы можете использовать все аргументы, передаваемые the error callback, например:

error: function(xhr, status, error) { 
    alert('Error: ' + status + '\nError Text: ' + error); 
}, 
+0

Это дает мне предупреждение: «Ошибка: ошибка Error Text: undefined». – oshirowanen

+1

@oshirowanen - Что вы получаете с 'alert ('Error:' + status + '\ nError Text:' + error + '\ nResponse Text:' + xhr.responseText);'?Кроме того, это не единственный метод отладки, использующий вашу консоль, или Firebug или чистую панель Chrome - все это хорошие инструменты для просмотра того, что происходит. –

+0

Попробуйте это сейчас. – oshirowanen

1

Второй аргумент предоставлена ​​error обратного вызова textStatus, который должен содержать описание ошибка:

error: function(xhr, textStatus) { alert(textStatus); } 

Обратите внимание, что вы, вероятно, не должны предоставлять эту информацию своим пользователям. Разбирайте сообщение с помощью Javascript и дайте им приятное приветственное сообщение, объясняющее ошибку.

+0

Используя объект 'xhr', вы также сможете получить доступ к фактическому ответу, возвращаемому с сервера. 'xhr.responseText' может предоставить вам текст страницы ошибки .NET, страницы 404 или 500 страниц. Это может быть очень полезной информацией. –

+0

@ lonesomeday, это просто дает мне «ошибку» в поле предупреждения. – oshirowanen

+0

Это не главный аргумент, который вы хотите использовать, так как фактические значения ошибки - только null, «timeout», «error», «notmodified» и «parsererror» ... лучше включить третий аргумент, а также гораздо больше деталей во многих случаях. –

0

У меня есть этот метод:

function HandleAjaxError(request, status, error) { 
    var ex = eval("(" + request.responseText + ")"); 

$('body').addClass("ui-widget-overlay"); 
    alert(ex.Message); 
    $('body').removeClass("ui-widget-overlay"); 
} 

$.ajax({ 
    type: "POST", 
    url: window.location.pathname + "/DoStuff", 
    data: "{}", 
    success: Success, 
    error: HandleAjaxError 
}); 

Таким образом, я могу корректно обработать сообщение об ошибке (и, возможно, код состояния) на стороне ASP.NET. Я обычно регистрирую исходную ошибку, а затем бросаю пользовательский/описательный для клиента.

Смежные вопросы