我试图通过将函数附加到 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" }))
{ %>
如果我OnSuccess="EmailResult"
从 Ajax.BeginForm 中取出或者只是$('#dialog').dialog('open');
从我的 EmailResult 函数中删除,那么错误就会消失,很明显这是 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 并且它工作得很好。不知道为什么,但是......如果其他人遇到这个,你去......