Ошибка jquery $ .post при вызове из Bootstrap Modal - PullRequest
2 голосов
/ 13 февраля 2012

В разрабатываемом веб-приложении я отображаю модальное диалоговое окно с помощью Bootstrap.В этом диалоге у меня есть элементы формы и кнопка сохранения.Когда пользователь нажимает «Сохранить», я запускаю функцию, которая вызывает $ .post для вызова действия asp.net mvc для сохранения введенных данных.

В браузере (Chrome) при нажатии кнопки «Сохранить» отображается следующее сообщение:

"Произошло нечто неожиданное: (.....".

После подтверждения сообщения об ошибке вызывается действие asp.net, а остальная часть сценария завершаетсяХорошо. Я также вижу ту же ошибку, если я использую $ .ajax.

IE дает немного другое поведение. То же самое сообщение в IE, но оно появляется после завершения функции обратного вызова.

ЕслиЯ вызываю функцию сохранения извне модального диалога. Я не вижу этого сообщения об ошибке.

function saveUser() {
    var userId = $('#userId').val();
    var fullName = $('#fullName').val();
    var userName = $('#userName').val();
    var isAdmin =  $('#isAdmin').is(':checked');
    var authenticationMode =  $('#userAuthenticationMode').val();

    $.post(
        "@Url.Action("Save", "Account")",
        {
            userId :  userId,
            fullName : fullName,
            userName : userName,
            isAdmin : isAdmin,
            authenticationMode : authenticationMode
        }, 
        function (data) {
            if (data.Success) {
                alert("success");
            }
            else {
                alert("failed");
            }
        }
    );

Вот модальное объявление:

<div id="update_user_modal" class="modal hide">
      . 
      .
      .    
    <div  style="float:right">
        <button id="SaveUser" class="btn btn-primary">Save changes</button>
    </div>
</div>

Обновление:

Найден источник сообщения с предупреждением.В коде есть обработчик ошибок ajax, о котором коллега не упомянул:

// Set up AJAX error handling ...
$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) {
if (jqXHR.status == 404) {
    $("#NotFoundInfoDialog").dialog("open");
} else if (jqXHR.status == 500) {
    $("#InternalServerErrorDialog").dialog("open");
} else {
    alert("Something unexpected happend :( ...");
  }
});

Любые идеи о том, как отладить ошибку ajax..status возвращает 0.

Обновление Когда я использую $ .ajax для вызова ajax, происходит следующее:
Первый раз, когда я пытаюсь сохранить неизвестное исключение ajax, вызывается и модальное закрывается.
Если я снова выведу модальный режим и попытаюсь сохранить его, он будет работать нормально.
Если я знаю, попробуйте снова отобразить модал и сохранить, я получаю «Внутренняя ошибка сервера».Мое действие MVC работает нормально.

Обновление Понятия не имею, почему, но удаление тегов формы в модальном div решило проблему.

Спасибо,

Lance

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

вы связали ajaxError неправильно, если статус не 404 или 500, то он всегда переходит к блоку else, который отображает ошибку "что-то неожиданное произошло", поэтому измените его

$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) {
if (jqXHR.status != 200){
 if (jqXHR.status == 404) {
     $("#NotFoundInfoDialog").dialog("open");
 } else if (jqXHR.status == 500) {
     $("#InternalServerErrorDialog").dialog("open");
 } else{
     alert("Something unexpected happend :( ...");
   }
 }
});
0 голосов
/ 20 февраля 2012

В моем модале были теги. Это то, что вызывало проблему. Понятия не имею почему. Я опубликую проблему в списке пользователей начальной загрузки Twitter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...