最终编辑:
在遵循 Darin Dimitrov 的回答后,我发现问题最终是对控制器方法的 AJAX 调用UpdateForm()
返回了一个空字符串。这是我在遇到不同问题后不久发现必要的修改。传递一个空字符串会导致 Firefox 的解析器阻塞(而 Chrome 和 IE 显然不在乎)所以我用一个空的div
.
编辑:
感谢 Darin Dimitrov 在下面的建议,我发现我遇到问题的原因是在提交相关表单时抛出错误。
错误显示“无法在层次结构中的指定点插入节点”。每次提交表单时都会抛出此问题。我在 POST 数据中注意到它似乎认为这是一个 XMLHttpRequest。这是原因吗(有问题的 AJAX 请求只是返回 HTML)?这是来自 Firebug 的 POST 数据:
此错误显示为“XML Parsing Error -- No Element Found”。
仅供参考-返回的 HTML 始终是一个空字符串...
我有一个在 IIS7 上运行的 MVC3 应用程序。在我的一个观点中,我有一个使用 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()
方法。
data-ajax-success
Firefox 与表单签名中的此选项不兼容吗?
我尝试过的事情
我找到了这个人: 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 不会!