Сериализация JQuery формы не запускается в IE - PullRequest
0 голосов
/ 16 февраля 2012

У меня проблема с формой, которая находится внутри диалогового окна jquery, не публикуемого в IE.

Он отлично работает в chrome и FF, отправляя данные на мой контроллер MVC, но отправляя нулевые значения из IE.

Я заставил его работать в одну сторону, вызвав предупреждение, чтобы отобразить результат сериализации.Это приводит к тому, что форма корректно сериализуется и отправляет значения на сервер.

$("<div id='formModal'><img src='../../Content/images/ajax-loader.gif' /></div>")
                    .addClass("dialog")
                    .attr("id", $(this).attr("data-dialog-id"))
                    .appendTo("body")
                    .dialog({
                        width: 800,
                        position: [300, 50],
                        title: $(this).attr("data-dialog-title"),
                        close: function () { $(this).dialog('destroy').remove(); window.location.reload(true); },
                        modal: true,
                        buttons: {
                            "Save": function () {
                                var formdata = $("#timeForm").serialize();
                                $.post("/TimeTracker/AddTime",
                                    $("#timeForm").serialize());
                                alert(formdata);
                                $(this).dialog("close");
                                $(this).dialog("destroy");
                                window.location.reload(true);
                                return false;
                            },
                            Cancel: function () {
                                $(this).dialog("close");
                                $(this).dialog("destroy");
                            }
                        }
                    })
                .load(this.href);

После удаления предупреждения форма больше не имеет сериализованных значений.

Это ошибка в моемJQuery скриптинг?Или что-то еще?

1 Ответ

2 голосов
/ 16 февраля 2012

У вас есть close обработчик событий для диалогового окна, которое перезагружает страницу window.location.reload(true) всякий раз, когда вы закрываете диалоговое окно.

И при нажатии кнопки Сохранить вы делаете так много вещей, публикуя форму, закрываядиалоговое окно и перезагрузите страницу.

Если вы действительно хотите перезагрузить страницу после публикации формы, дождитесь ответа.Вы можете написать свой код в обработчике успеха.Кроме того, перезагрузка страницы в любом случае закроет обработчик, поэтому вам не нужно вызывать $(this).dialog("close"), который вызовет событие close и снова перезагрузит страницу.

Попробуйте это.

          buttons: {
                        "Save": function () {
                            var formdata = $("#timeForm").serialize();
                            $.post("/TimeTracker/AddTime",
                                formdata, function(){
                                window.location.reload(true);
                            });
                            //alert(formdata);
                            //$(this).dialog("close");
                            //$(this).dialog("destroy");
                            //window.location.reload(true);
                            return false;
                        },
                        Cancel: function () {
                            $(this).dialog("close");
                            $(this).dialog("destroy");
                        }
                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...