我正在尝试获得可排序工作的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>


而在我的asp.net mvc视图中的这个html:

<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时,它都会显示“ [object Object]”。我不知道如何获取该对象的内容作为字符串。

任何帮助将不胜感激。

最佳答案

您元素的ID为sortThis,大写字母为T

$('#sortthis').sortable('serialize')将仅返回空的jQuery对象,以指示该选择器未找到任何匹配的元素。

更改

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



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

它应该工作。

08-19 04:49