проблемы с AJAX формы внутри JQuery UI всплывающих окон в IE8 - PullRequest
3 голосов
/ 14 ноября 2010

Я экспериментировал с jQuery UI и MVC3 и наткнулся на следующую проблему:

У меня есть очень простая страница, которая использует AJAX

<%: Ajax.ActionLink("Edit", "Edit", new { id = 1 }, new AjaxOptions() { UpdateTargetId = "dialog", OnSuccess = "DisplayPopup" }, null)%>

<div id="dialog" title="Location">

</div>

Это код контроллера:

    public ActionResult Edit(int id)
    {
        return PartialView();
    }

    [HttpPost]
    public ActionResult Edit()
    {
        return Content("Saved!");
    }

и частичное редактирование вида:

<b>whatever</b>

<% using (Ajax.BeginForm("Edit", "Home",
    new AjaxOptions()
    {
        UpdateTargetId = "editForm",
        HttpMethod = "POST"
    }))
{%>
<div id="editForm">
    <input type="submit" value="Save" />
</div>
    <% } %>

приведенный выше код работает нормально.

Теперь я добавляю всплывающий код jquery UI:

<script type="text/javascript">
    function DisplayPopup() {
        $('#dialog').dialog('open');
    }

    $('#dialog').dialog({
        autoOpen: false,
        width: 600,
        modal: true,
        buttons: {
            "Close": function () {
                $(this).dialog("close");
            }
        }
    });
</script>

после этого в Firefox и Chrome он работает нормально, тогда как в IE8 я вижу следующую проблему:

  1. click edit - вызывает AJAX-вызов действия Edit (int id) и отображает представление редактирования во всплывающем окне
  2. нажмите сохранить - AJAX вызывает Edit () и показывает текст "Saved!"
  3. закрыть всплывающее окно
  4. нажмите edit - AJAX вызов Edit (int id) - снова
  5. нажмите сохранить - на этот раз он делает ПОЛНЫЙ постбэк (только в IE)

есть идеи?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

У меня была такая же проблема: работал в FF, но не в IE8.

Попробуйте добавить что-то к частичному ответу.

У меня возникла такая же проблема в IE, и я добавил @ViewBag.Message к ответу частичного просмотра, где ViewBag.Message = "Submitted " + DateTime.Now.ToLongTimeString(); был назначен в контроллере на Post.

Это неожиданно и неожиданно вызвало частичное представление в правильном целевом элементе вместо загрузки представления в качестве новой страницы в IE8.

0 голосов
/ 14 марта 2011

Попробуйте, увидев, что это работает в первый раз, но не во второй.Создайте новый диалог каждый раз и уничтожайте его, когда закончите.

<script type="text/javascript">
    function DisplayPopup() {
        $('#dialog').dialog({
        autoOpen: true,
        width: 600,
        modal: true,
        buttons: {
            "Close": function () {
                $(this).dialog("close");
            }
        }, close: function() {
                $(this).dialog("destroy");

            }
    });
    }


</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...