ОКОНЧАТЕЛЬНОЕ РЕДАКТИРОВАНИЕ:
После ответа Дарина Димитрова я обнаружил, что проблема заключалась в том, что вызов AJAX метода контроллера UpdateForm()
возвращал пустой нить. Это была модификация, которую я счел необходимой некоторое время назад после того, как столкнулся с другой проблемой. Передача пустой строки заставляла синтаксический анализатор Firefox задыхаться (в то время как Chrome и IE, по-видимому, не заботились), поэтому я заменил пустую строку пустым div
.
Изменить:
Благодаря приведенным ниже предложениям Дарина Димитрова я обнаружил, что причина, по которой у меня возникли проблемы, связана с ошибкой, возникающей всякий раз, когда отправляется рассматриваемая форма.
Ошибка гласит: «Узел не может быть вставлен в указанную точку иерархии». Это бросается каждый раз, когда форма отправляется. Я заметил в данных POST, что кажется, что это XMLHttpRequest. Это причина (рассматриваемый запрос AJAX просто возвращает HTML)? Вот данные POST от Firebug:
Эта ошибка гласит: «Ошибка синтаксического анализа XML — элемент не найден».
К сведению - возвращаемый HTML всегда является пустой строкой...
У меня есть приложение MVC3, работающее на IIS7.В одном из моих представлений у меня есть форма, созданная с использованием вспомогательной функции Microsoft HTML:
@using (Ajax.BeginForm("UpdateForm", new AjaxOptions { UpdateTargetId = "TargetDiv", InsertionMode = InsertionMode.InsertAfter, OnSuccess = "ClearTextBox" }))
{
@Html.TextArea("txtInput", new { id = "txtInput", cols = "20", rows = "5", wrap = "virtual" })
}
Это генерирует следующий HTML-код, когда Контроллер предоставляет это представление:
Что я в основном пытаюсь сделать здесь, так это взять текст внутри TextArea
, называемого txtInput
, и добавляйте его в конец Div
, называемого TargetDiv
, всякий раз, когда кнопка Send
щелкнуть выше и удалить текст из txtInput
после завершения добавления с помощью метода ClearTextBox()
(Javascript). Приложение всегда работает в любом браузере; и когда я запускаю в Internet Explorer или Chrome, очистка текста работает просто отлично. Однако Firefox, похоже, не хочет вызывать метод ClearTextBox()
.
Является ли Firefox несовместимым с этой опцией data-ajax-success
в подписи формы?
Вещи, которые я пробовал
Я нашел этого парня: Ajax.BeginForm не вызывает onSuccess
Решение состоит в том, чтобы добавить этот сценарий:
Я вызываю этот сценарий:
...но я попытался заменить его на всякий случай. Нет радости.
Некоторые люди в чате C# попросили меня попробовать изменить вызов метода, включив в него круглые скобки, так что HTML получился таким:
Но это не помогло.
Ребята из C# Chat также предложили заменить вызов Javascript предупреждением — что-то вроде этого:
В то время как Chrome выводит окно сообщения, Firefox этого не делает!