Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как бы вы обрабатывали ошибки при использовании jQuery.ajax()?
При использовании jQuery с ajax способ представить данные форме, что является лучшим способом, чтобы обрабатывать ошибки? Это пример того, как может выглядеть вызов:
$.ajax({
url: "userCreation.ashx",
data: { u:userName, p:password, e:email },
type: "POST",
beforeSend: function(){disableSubmitButton();},
complete: function(){enableSubmitButton();},
error: function(xhr, statusText, errorThrown){
// Work out what the error was and display the appropriate message
},
success: function(data){
displayUserCreatedMessage();
refreshUserList();
}
});
Запрос может завершиться неудачей по ряду причин, таких как дублирование имени пользователя, дублирование адреса email и т. д., и ashx записывается для создания исключения, когда это происходит.
Моя проблема, похоже, заключается в том, что, бросая исключение, ashx вызывает неопределенность statusText и errorThrown .
Я могу добраться до XMLHttpRequest.responseText , который содержит HTML, который составляет стандартную страницу ошибки .net.
Я нахожу заголовок страницы в responseText и использую заголовок, чтобы выяснить, какая ошибка была выброшена. Хотя у меня есть подозрение, что это развалится, когда я включу пользовательские страницы обработки ошибок.
Должен ли я выбрасывать ошибки в ashx, или я должен возвращать код состояния как часть данных, возвращенных вызовом userCreation.ashx , а затем использовать это, чтобы решить, какие действия предпринять?
Как вы справляетесь с этими ситуациями?
Для отладки я обычно просто создаю элемент (в случае ниже: <div id="error"></div> ) на странице и записываю в него XmlHttpRequest:
error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#error").html(XMLHttpRequest.status + "\n<hr />" + XMLHttpRequest.responseText);
}
Затем вы можете увидеть типы возникающих ошибок и правильно их зафиксировать:
if (XMLHttpRequest.status === 404) // display some page not found error
if (XMLHttpRequest.status === 500) // display some server error
В вашем ashx вы можете создать новое исключение (например, "Invalid User" и т. д.) а потом просто разобрать, что из XMLHttpRequest.responseText ? Для меня, когда я получаю ошибку, XMLHttpRequest.responseText не является стандартной страницей ошибки Asp.Net, это объект JSON, содержащий такую ошибку:
{
"Message":"Index was out of range. Must be non-negative and less than the size of the collection.\r\n
Parameter name: index",
"StackTrace":" at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)\r\n
at etc...",
"ExceptionType":"System.ArgumentOutOfRangeException"
}
Edit: это может быть связано с тем, что вызываемая мной функция помечена этими атрибутами:
<WebMethod()> _
<ScriptMethod()> _
Должен ли я выбрасывать ошибки в
данного, Или я должен быть возврат
код состояния как часть данных
возвращен по звонку в
userCreation.ashx, затем используя это для
решите, какие действия предпринять? Как ты
справляться с такими ситуациями?
Должен ли я выбрасывать ошибки в данного, Или я должен быть возврат код состояния как часть данных возвращен по звонку в userCreation.ashx, затем используя это для решите, какие действия предпринять? Как ты справляться с такими ситуациями?
Лично я, если это возможно, предпочел бы справиться с этим на стороне сервера и создать сообщение для пользователя там. Это очень хорошо работает в сценарии, где вы хотите только показать сообщение пользователю, сообщая ему, что произошло (сообщение проверки, по существу).
Однако если вы хотите выполнить действие, основанное на том, что произошло на сервере, вы можете использовать код состояния и написать некоторые javascript для выполнения различных действий на основе этого кода состояния.
Теперь у меня есть проблема, какой ответ принять.
Дальнейшее размышление над этой проблемой приводит меня к выводу, что я неправильно бросал исключения. Повторяющиеся имена пользователей, адреса email и т. д. являются ожидаемыми проблемами в процессе регистрации и поэтому не являются исключениями, а просто ошибками. В этом случае я, вероятно, не должен был бы создавать исключения, но возвращать коды ошибок.
Это наводит меня на мысль, что в данном случае следует использовать подход иробинсона, тем более что форма является лишь малой частью отображаемого UI. Теперь я реализовал это решение и возвращаю xml, содержащий статус и необязательное сообщение, которое должно отображаться. Затем я могу использовать jQuery, чтобы разобрать его и предпринять соответствующие действия: -
success: function(data){
var created = $("result", data).attr("success");
if (created == "OK"){
resetNewUserForm();
listUsers('');
} else {
var errorMessage = $("result", data).attr("message");
$("#newUserErrorMessage").text(errorMessage).show();
}
enableNewUserForm();
}
Однако ответ Трэвиса очень подробный и был бы идеальным во время отладки или если бы я хотел показать пользователю сообщение об исключении. Я определенно не получаю JSON обратно, так что это, вероятно, связано с одним из тех атрибутов, которые Трэвис перечислил, поскольку у меня их нет в моем коде.
(Я собираюсь принять ответ иробинсона, но опередить ответ Трэвиса. Просто странно принимать ответ, который не имеет большинства голосов.)