ajax.beginform onsucess updatetargetid скрытый ввод - PullRequest
0 голосов
/ 05 июля 2010

Я пытаюсь вызвать диалоговое окно jquery ui, прикрепив функцию к свойству onsuccess ajaxoptions в ajax.beginform ..

<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.

Мой первый вопрос: я делаю что-то неправильно, из-за чего это не работает и / или если это не сработает, тогда есть лучшее решение.

Я пытаюсь создать диалоговое окно, которое показывает, было ли сообщение отправлено. Я не хочу использовать диалоговое окно с предупреждением.

Полагаю, что это поможет, в отладчике IE 8 возникает неопределенная ошибка в библиотеке MicrosoftAjax.js

Последний блок этого кода вызывает проблему, и на вкладке locals в IE 8 написано, что 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, и он работает отлично. Не знаю почему, но ... если кто-то еще столкнется с этим, вы идете ...

1 Ответ

0 голосов
/ 07 июля 2010

Итак, я думаю, это то, что я понял ... Я запустил новый проект mvc с двумя входами и начал использовать только окно оповещения, так как оказалось, что он не был связан с плагином диалога jquery.ui.Я получил его для корректной работы с окном оповещения, появляющимся после его запуска с использованием ajax.beginform.

Короче говоря ... Вы не можете использовать скрытый ввод для UpdateTargetID в Ajax.BeginForm?Я предполагаю, что это своего рода вопрос и ответ, но изменение UpdateTargetID на ID "div" исправило его, и оно работает надлежащим образом.Вы даже можете установить видимость Div скрытой, и это работает.

...