0

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に変更しましたが、完全に機能します。理由はわかりませんが...他の誰かがこれに遭遇した場合は...

4

1 に答える 1

0

だから私はこれが私が理解したことだと思います..2つの入力で新しいmvcプロジェクトを開始し、jquery.uiダイアログプラグインに関連していないことが判明したため、アラートボックスを使用し始めました。ajax.beginformを使用して実行した後、アラートボックスが表示されて正しく動作するようになりました。

要するに、Ajax.BeginForm の UpdateTargetID に Hidden Input を使用できないのでしょうか。これは一種の質問と回答だと思いますが、UpdateTargetID を「div」の ID に変更すると修正され、適切に機能します。Div の可視性を非表示に設定することもでき、機能します。

于 2010-07-07T03:40:02.183 に答える