Как Вы обработали бы ошибки при использовании jQuery.ajax ()?

Классификаторы - это просто объекты, которые можно мариновать и сбрасывать, как и любые другие. Чтобы продолжить свой пример:

import cPickle
# save the classifier
with open('my_dumped_classifier.pkl', 'wb') as fid:
    cPickle.dump(gnb, fid)    

# load it again
with open('my_dumped_classifier.pkl', 'rb') as fid:
    gnb_loaded = cPickle.load(fid)
33
задан Pmpr 21 November 2016 в 10:36
поделиться

3 ответа

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

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

Однако, если Вы хотите выполнить действие на основе того, что произошло на сервере, можно хотеть использовать код состояния и записать некоторый JavaScript для выполнения различных действий на основе того кода состояния.

16
ответ дан 27 November 2019 в 18:37
поделиться

Теперь у меня есть проблема относительно который ответ принять.

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

, Который приводит меня думать, что irobinson's подход должен быть тем для взятия в этом случае, тем более, что форма является только небольшой частью отображаемого 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();
}

Однако ответ travis' очень подробен и был бы прекрасен во время отладки или если я хотел отобразить сообщение об исключении пользователю. Я определенно не получаю JSON назад, таким образом, это, вероятно, до одного из тех атрибутов, которые перечислил travis, поскольку у меня нет их в моем коде.

(я собираюсь принять ответ irobinson, но ответ upvote travi. Просто чувствует себя странным принять ответ, который не имеет большинства голосов.)

4
ответ дан 27 November 2019 в 18:37
поделиться

Для отладки я обычно просто создаю элемент (в случае ниже: <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, можно ли выдать новое исключение (например, "Недействительный пользователь" и т.д.) и затем просто проанализировать ли это из XMLHttpRequest.responseText? Для меня то, когда я получаю ошибку эти XMLHttpRequest.responseText, не является стандартным Asp. Сетевая ошибочная страница, это - объект 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"
}

Редактирование: Это могло быть то, потому что функция, которую я вызываю, отмечена с этими атрибутами:

<WebMethod()> _
<ScriptMethod()> _
20
ответ дан 27 November 2019 в 18:37
поделиться
Другие вопросы по тегам:

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