ajax.beginform。のajaxoptionsのonsuccessプロパティに関数をアタッチして、jqueryuiダイアログを呼び出そうとしています。
<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');
}
次に、実際にはまだ接続されていない連絡フォームがあります。コントローラーは、2つの文字列応答のうちの1つで応答します。
<% using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "ContactResult", OnSuccess="EmailResult" }))
{ %>
Ajax.BeginFormからOnSuccess="EmailResult"
削除するか$('#dialog').dialog('open');
、EmailResult関数から削除すると、エラーが消えるので、明らかにこれはOnSuccessプロパティとJqueryUIダイアログの問題です。
私の最初の質問は、これが機能しない原因となっている何か間違ったことをしているのか、および/またはこれが機能しない場合は、より良い解決策があるのかということです。
メッセージが送信されたかどうかを示すダイアログを作成しようとしています。警告ダイアログボックスを使用したくない。
エラーが役立つと思います。IE8デバッガーでは、MicrosoftAjax.jsライブラリに未定義のエラーが表示されます。
このコードのfinallyブロックが問題を引き起こしており、IE8の[ローカル]タブで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に変更しましたが、完全に機能します。理由はわかりませんが...他の誰かがこれに遭遇した場合は...