jQueryUI Ajax.NET Ошибка обратной передачи - PullRequest
2 голосов
/ 11 мая 2010

У меня есть эта страница ASP.NET с компонентами ASP.NET UpdatePanel и jQueryUI, которые можно сбрасывать и сортировать. Страница отлично работает во всех браузерах, но не в Internet Explorer (проверено IE8).

После того, как я пытаюсь вызвать событие ASP.NET AJAX (нажав кнопку asp.net внутри UpdatePanel), мой сортируемый список перестает работать правильно в браузере IE, и браузер выдает следующую ошибку:

Сообщение: неуказанная ошибка. Линия: 145 Char: 186 Код: 0 URI: http://code.jquery.com/jquery-1.4.2.min.js

Я обнаружил, что проблема вызвана кодом в строке 66:

$("#droppable").droppable();

Если я закомментирую это, сортируемый список будет отлично работать после постбэков ajax. Но это не имеет смысла.

Кто-нибудь знает, что может быть не так?

Спасибо.

P.S. Я использую jQueryUI 1.8.1 и jQuery 1.4.2

Ответы [ 2 ]

1 голос
/ 14 мая 2010

Я считаю, что это ошибка в JQuery - думаю, есть исправление, в котором вы переопределяете функцию смещения для работы под IE:

http://dev.jqueryui.com/ticket/4918

Приветствия

0 голосов
/ 14 мая 2010

Решение проблемы можно найти здесь - http://pastebin.org/236945

<%@ Page Language="C#" AutoEventWireup="true" %>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
        <style type="text/css">
                #sortable
                {
                        list-style-type: none;
                        margin: 0;
                        padding: 0;
                        border: solid 1px #999999;
                }
                #sortable li
                {
                        margin: 0.3em 0.3em 0.3em 0.3em;
                        padding-left: 1.5em;
                        font-size: 1em;
                        height: auto;
                        border: dotted 1px #999999;
                        background-color: #dddddd;
                }
                #sortable li:hover
                {
                        background-color: #aaaaaa;
                }
        </style>
</head>
<body>
        <form id="form1" runat="server">
                <asp:ScriptManager runat="server" ID="srptManager">
                        <Scripts>
                                <asp:ScriptReference Path="http://code.jquery.com/jquery-1.4.2.min.js" />
                                <asp:ScriptReference Path="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js" />
                        </Scripts>
                </asp:ScriptManager>
                <asp:UpdatePanel ID="updPanel" runat="server">
                        <ContentTemplate>
                                <ul id="sortable">
                                        <li>Item 1</li>
                                        <li>Item 2</li>
                                        <li>Item 3</li>
                                        <li>Item 4</li>
                                        <li>Item 5</li>
                                </ul>
                                <div id="droppable" style="background-color: black">
                                        Drop Here</div>
                                <asp:Button runat="server" ID="btnAjaxRefresh" Text="Go" />
                        </ContentTemplate>
                </asp:UpdatePanel>
 
                <script type="text/javascript" language="javascript">
                        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
                        // *******Solution Here*******
                        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
 
                        function EndRequestHandler(sender, args) {
                                if (args.get_error() == undefined) {
                                        jqueryStuff();
                                }
                        }
 
                        function BeginRequestHandler(sender, args) {
                                $("#sortable").sortable("destroy");
                                $("#droppable").droppable("destroy");
                        }
 
                        function jqueryStuff() {
                                $(document).ready(function() {
                                        $("#sortable").disableSelection();
                                        $("#sortable").sortable();
                                        // ******Problem at this line******
                                        $("#droppable").droppable();
                                });
                        }
 
                        jqueryStuff();
                </script>
        </form>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...