我试图通过将函数附加到ajax.beginform上的ajaxoptions的onsuccess属性来调用jquery ui对话框。
<script type="text/javascript">
// Dialog
$(document).ready(function () {
$('#dialog').dialog({
autoOpen: false,
width: 600,
modal: true,
buttons: {
"Ok": function () {
$(this).dialog("close");
}
}
});
});
</script>
在一个单独的脚本文件中,我有这个..
function EmailResult() {
$('#dialog').dialog('open');
}
然后我有一个尚未实际接线的联系表单,控制器只响应两个字符串响应中的一个。
<% using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "ContactResult", OnSuccess="EmailResult" }))
{ %>
如果我从Ajax.BeginForm中取出OnSuccess="EmailResult"
或者只是从我的EmailResult函数中删除$('#dialog').dialog('open');
,则错误就会消失,所以这显然是OnSuccess属性和Jquery UI对话框的问题。
我的第一个问题是我做错了导致这种情况无法正常工作和/或如果这不起作用那么是否有更好的解决方案。
我正在尝试创建一个对话框,说明该消息是否已发送。我不想使用警告对话框。
我想错误会有所帮助,在IE 8调试器中它会在MicrosoftAjax.js库中出现未定义的错误
此代码的finally块导致问题,在IE 8的locals选项卡下,它表示b未定义。
this._onReadyStateChange = function () {
if (a._xmlHttpRequest.readyState === 4) {
try {
if (typeof a._xmlHttpRequest.status === "undefined") return
} catch (b) {
return
}
a._clearTimer();
a._responseAvailable = true;
try {
a._webRequest.completed(Sys.EventArgs.Empty)
} finally {
if (a._xmlHttpRequest != null) {
a._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
a._xmlHttpRequest = null
}
}
}
};
它正在更新的内容是
<%= Html.Hidden("ContactResult") %>
事实证明是整个问题,我将隐藏输入更改为div,它完美无缺。不知道为什么但是......如果有其他人遇到这个你去...
答案 0 :(得分:0)
所以我想这就是我想到的..我开始了一个带有两个输入的新mvc项目,并开始使用一个警告框,因为事实证明它与jquery.ui对话框插件无关。在使用ajax.beginform运行警报框之后,我让它正常工作。
这么长的故事简短..您不能在Ajax.BeginForm中为UpdateTargetID使用隐藏输入?我想这是一个问题和答案,但将UpdateTargetID更改为“div”的ID修复它并且它适当地工作。您甚至可以将Div的可见性设置为隐藏,并且它可以正常工作。