保存对jQuery可排序表的更改

时间:2011-06-08 15:55:11

标签: c# jquery jquery-ui-sortable

我有一个表,允许用户按照他们想要的顺序拖放行,然后保存它们。让拖放部件工作没问题。这是我遇到的问题。我正在向Web服务发送一个Ajax调用,然后进行保存。我似乎无法在Web服务中实际捕获请求。

我的JavaScript函数如下所示:

$(document).ready(
            function () {
                $(".sortable").sortable({
                    update: function () {
                        serial = $('.sortable').sortable('serialize');
                        $.ajax({
                            url: "MyWebService.asmx/SortTable",
                            type: "post",
                            data: serial,
                            error: function () {
                                alert("theres an error with AJAX");
                            }
                        });
                    }
                });

            });

JSON字符串从Firebug向我展示的内容看起来很好。 Web服务功能如下:

[WebMethod]
public string SortTable(String[] rows)
{
    //SaveChanges();
    return "Called!";
}

当我在那里放置一个断点时,它永远不会被击中。但是当函数中没有参数时,它会受到影响。我已经尝试用“对象”替换“String []”并且它仍然没有被击中,我觉得很奇怪。这是怎么回事?

1 个答案:

答案 0 :(得分:0)

您可能需要使用[ScriptService]属性修饰Web服务,以允许客户端脚本调用它。此外,如果要发送JSON请求,则需要指定内容类型。另一个评论是将请求作为一个实际的JSON对象发送,可以使用JSON.stringify方法实现(也许$('.sortable').sortable('serialize')调用已经这样做了,我不熟悉,你只需要确保POSTed值如下所示:[ 'row1', 'row2', ... ]):

$.ajax({
    url: 'MyWebService.asmx/SortTable',
    type: 'post',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify([ 'row1', 'row2', 'row3' ]),
    error: function () {
        alert('theres an error with AJAX');
    }
});