FINAL EDIT:MVC3 Ajax.BeginForm OnSuccess не работает в Firefox
После выполнения ответа от Darin Димитров, я обнаружил, что проблема заканчивал тем, что вызов AJAX для метода контроллера UpdateForm()
был возвращая пустую строку. Это была модификация, которую я нашел нужным некоторое время назад после возникновения другой проблемы. Передача пустой строки приводила к тому, что синтаксический анализатор Firefox задыхался (хотя, по-видимому, Chrome и IE не заботились), поэтому я заменил пустую строку пустым div
.
Edit:
Благодаря предложениям Дарин Димитрова ниже, я обнаружил, что причина у меня была проблема из-за ошибки бросают всякий раз, когда данная форма представляется.
Ошибка чтения «Узел не может быть вставлена в заданной точке в иерархии». Это бросается каждый раз при отправке формы. Я заметил в данных POST, что кажется, что это XMLHttpRequest. Это причина (запрос AJAX, о котором идет речь, просто возвращает HTML)? Вот данные POST с Firebug:
Эта ошибка чтения "XML Синтаксический Ошибка - Нет Элемент Found".
FYI - 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" })
<input id="send" class="button" type="submit" value="Send"/><br />
}
Это генерирует следующий HTML, когда контроллер обеспечивает эту точку зрения:
<form action="/RootName/ControllerName/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="ClearTextBox" data-ajax-update="#TargetDiv" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
То, что я в основном пытаясь сделать здесь взять текст внутри TextArea
называется txtInput
и добавить его к концу Div
называется TargetDiv
всякий раз, когда Send
кнопка выше щелкнул и очистить текст от txtInput
после завершения добавления с помощью метода ClearTextBox()
(Javascript). Приложение всегда работает в каждом браузере; и когда я запускаю в Internet Explorer или Chrome, очистка текста работает нормально. Тем не менее, Firefox, похоже, не хочет вызывать метод ClearTextBox()
.
Является ли Firefox не совместимым с этим опцией data-ajax-success
в форме подписи?
Вещи я Пробовал
Я нашел этот парень: Ajax.BeginForm doesn't call onSuccess
Решение состоит в том, чтобы добавить этот скрипт:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
Я называю этот сценарий :
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
... но я попытался заменить его на всякий случай. Нет радости.
меня попросили попробовать изменить вызов метода включить круглые скобки от некоторых людей в C# чат так, что HTML вышел, как это:
<form action="/WebChat/TMWC/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="ClearTextBox()" data-ajax-update="#chatText" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
Но это не помогло.
Люди в C# Chat также предложил мне заменить вызов Javascript с предупреждением - что-то вроде этого:
<form action="/WebChat/TMWC/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="alert('yo!')" data-ajax-update="#chatText" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
В то время как Chrome появляется окно сообщения, Firefox не делает!
«data-ajax-success» выглядит как пользовательский атрибут, просто говорящий, какой метод вызывать, поэтому я сомневаюсь, что это проблема с самим атрибутом. Я не уверен, что такое dev. tools firefox имеет (я использую Chrome в основном), но я бы проверил там, чтобы увидеть, показывает ли он какие-либо ошибки JS в другом месте кода. – justinb138
Я использую Firebug, но он ничего не указал мне ... = ( –
Не могли бы вы отправить вам метод ClearTextBox()? Просто попробовал это (файл-> новый проект mvc3, используемый 'jquery.unobtrusive-ajax .min.js') и отлично работает в FF. Моя версия ClearTextBox такова: 'function ClearTextBox() {$ (" # txtInput "). val (" ");}' –