Что сервис JSON должен возвратить при отказе / ошибка

Прежде всего, не используйте «Selection» в вашем коде. Это плохая практика, и она может создать много разных проблем.

Что я хотел бы предложить для вас:

   Dim initialRow As Long, endRow As Long
   'starts on line 1 and goes on
   initialRow = 1
   'checks for bold in column 1
   Do While Cells(initialRow,1).Font.Bold = False
     initialRow = initialRow + 1
   Loop
   endRow = initialRow+1
   Do While Cells(endRow+1,1).Font.Bold = False
     endRow = endRowRow + 1
   Loop
   Range("A" & initialRow & ":BG" & endRow).Cut
   Sheets.Add After:=ActiveSheet
   ActiveSheet.Paste

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

78
задан thatismatt 18 January 2011 в 16:19
поделиться

7 ответов

Код состояния HTTP, который Вы возвращаете, должен зависеть от типа ошибки, которая произошла. Если идентификатор не существует в базе данных, возвратите 404; если у пользователя нет достаточных полномочий выполнить тот вызов Ajax, возвратите 403; если база данных испытывает таймаут перед способностью найти запись, возвратите 500 (ошибка сервера).

jQuery автоматически обнаруживает такие коды ошибок и выполняет функцию обратного вызова, которую Вы определяете в своем вызове Ajax. Документация: http://api.jquery.com/jQuery.ajax/

Короткий пример a $.ajax ошибочный обратный вызов:

$.ajax({
  type: 'POST',
  url: '/some/resource',
  success: function(data, textStatus) {
    // Handle success
  },
  error: function(xhr, textStatus, errorThrown) {
    // Handle error
  }
});
33
ответ дан Ron DeVera 24 November 2019 в 10:38
поделиться

Посмотрите этот вопрос для некоторого понимания лучших практик для Вашей ситуации.

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

{
    success:false,
    general_message:"You have reached your max number of Foos for the day",
    errors: {
        last_name:"This field is required",
        mrn:"Either SSN or MRN must be entered",
        zipcode:"996852 is not in Bernalillo county. Only Bernalillo residents are eligible"
    }
} 

Это - подход stackoverflow использование (в случае, если Вы задавались вопросом, как другие делают такого рода вещь); операции записи как голосование имеют "Success" и "Message" поля, независимо от того, если голосование было позволено или нет:

{ Success:true, NewScore:1, Message:"", LastVoteTypeId:3 }

Как @Phil. H указанный, необходимо быть последовательными в том, что Вы выбираете. Это легче сказать чем сделать (как все в разработке!).

Например, если Вы отправляете комментарии слишком быстро о Так, вместо того, чтобы быть последовательными и возвратиться

{ Success: false, Message: "Can only comment once every blah..." }

ТАК выдаст исключение сервера (HTTP 500) и поймайте его в их error обратный вызов.

Так, как это "чувствует себя хорошо" для использования jQuery + .ashx + HTTP [коды состояния] IMO, это добавит больше сложности к Вашей клиентской кодовой базе, чем, он стоит. Поймите, что jQuery не "обнаруживает" коды ошибок, а скорее отсутствие кода успеха. Это - важное различие при попытке разработать клиент на основе кодов ответа HTTP с jQuery. Вы только получаете два варианта (действительно ли это был "успех" или "ошибка"?), который необходимо перейти далее самостоятельно. Если у Вас есть небольшое количество WebServices, управляющего небольшим количеством страниц затем, это могло бы быть хорошо, но что-либо более широкий масштаб может стать грязным.

Это намного более естественно в a .asmx WebService (или WCF в этом отношении) для возврата пользовательского объекта, чем настроить код состояния HTTP. Плюс Вы получают сериализацию JSON бесплатно.

55
ответ дан Community 24 November 2019 в 10:38
поделиться

Используя коды состояния HTTP был бы УСПОКОИТЕЛЬНЫЙ способ сделать это, но это предложит, чтобы Вы сделали остальную часть интерфейса RESTful с помощью ресурса URIs и так далее.

По правде говоря, определите интерфейс, как Вам нравится (возвратите ошибочный объект, например, детализировав свойство с ошибкой и блок HTML, который объясняет это, и т.д.), но после того как Вы выбрали что-то, что работает в прототипе, быть безжалостно последовательным.

17
ответ дан Phil H 24 November 2019 в 10:38
поделиться

Я думаю, пузыритесь ли Вы просто исключение, оно должно быть обработано в обратном вызове jQuery, который передается в для 'ошибочной' опции. (Мы также регистрируем это исключение в сторону сервера к центральному журналу). Никакой специальный код Ошибки HTTP не потребовал, но мне любопытно видеть то, что другие люди делают, также.

Это - то, что я делаю, но это - просто мои.02$

Если Вы собираетесь быть УСПОКОИТЕЛЬНЫМИ и коды ошибок возврата, попытайтесь придерживаться стандартных кодов, сформулированных W3C: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

3
ответ дан Dan Esparza 24 November 2019 в 10:38
поделиться

Я определенно возвратил бы 500 ошибок с объектом JSON описание состояния ошибки, подобного тому, как ошибка ASP.NET AJAX "ScriptService" возвращается. Я полагаю, что это довольно стандартно. Определенно хорошо иметь ту непротиворечивость при обработке потенциально неожиданных состояний ошибки.

В стороне, почему не только используют созданный в функциональности в.NET, если Вы пишете это в C#? WCF и сервисы ASMX помогают сериализировать данные как JSON без изобретения велосипед.

2
ответ дан Dave Ward 24 November 2019 в 10:38
поделиться

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

0
ответ дан Quintin Robinson 24 November 2019 в 10:38
поделиться

Если пользователь предоставляет недопустимые данные, это обязательно должен быть 400 Bad Request ( Запрос содержит неверный синтаксис или не может быть выполнен. )

1
ответ дан 24 November 2019 в 10:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: