Почему $ ('# sortthis'). Sortable ("serialize") просто возвращает строку с надписью '[Object Object]'? - PullRequest
3 голосов
/ 16 декабря 2010

Я пытаюсь получить ajax-версию сортируемой работы.У меня есть этот Javascript:

<script src="/Scripts/jquery-ui/jquery.ui.widget.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui/jquery.ui.mouse.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui/jquery.ui.sortable.js" type="text/javascript"></script>
<script type="text/javascript">
    // Sortable
    $(document).ready(function () {
        $("#sortThis").sortable({
            handle: '.handle',
            update: function () {

                // get new order
                var order = $('#sortthis').sortable('serialize');

                // excecute ajax for db update

                $.post(
                    "/find/ajaxactionhere",
                    order,
                    function (data) {
                        $("#info").html(data);
                    }
                );
            }
        });
    });
</script>

И этот HTML-код в моем представлении asp.net MVC:

<table>
    <thead>
        <tr>
            <th>headers</th>
            <th>headers</th>
        </tr>
    </thead>
    <tbody id="sortThis">
        <% foreach (var item in Model) %>
        <% { %>
            <tr id="list_<%: item.Tier %>">
                <td>
                <img class="handle" src="/sortIcon.gif" />
                </td>
                <td><%: item.data %></td>
</tr>
        <% } %>
    </tbody>
</table>

Это успешно позволяет мне изменить порядок всех строк таблицы.Мое действие по обработке пост-запроса ajax выглядит следующим образом:

    [HttpPost]
    public string ajaxactionhere(FormCollection form)
    {
        StringBuilder sb = new StringBuilder();

        sb.Append(":: ");

        if (form != null)
        {
            foreach (var key in form.AllKeys)
            {
                sb.Append(form[key]);
            }
        }
        else
        {
            sb.Append("null");
        }
        return sb.ToString();
    }

переменной javascript order назначено $('#sortthis').sortable('serialize');.Всякий раз, когда я отображаю order, он говорит «[объект объекта]».Я не могу понять, как получить содержимое этого объекта в виде строки.

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 17 декабря 2010

ID вашего элемента sortThis с большой буквы T.

$('#sortthis').sortable('serialize') просто вернет пустой объект jQuery, чтобы указать, что этот селектор не нашел подходящих элементов.

Изменение

var order = $('#sortthis').sortable('serialize');

до

var order = $('#sortThis').sortable('serialize');

и оно должно работать.

...