Сохранение изменений в сортируемой таблице jQuery - PullRequest
1 голос
/ 08 июня 2011

У меня есть таблица, в которой пользователям разрешено перетаскивать строки в нужном им порядке, а затем сохранять их. У меня нет проблем с получением части перетаскивания для работы. У меня проблемы с сохранением. Я отправляю Ajax-вызов в веб-службу, которая затем сохраняет данные. Похоже, я не могу поймать запрос в веб-сервисе.

Моя функция 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 показывает мне. Функция веб-сервиса выглядит так:

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

Когда я ставлю точку останова, она никогда не попадает в цель. Если в функции нет аргументов, то она попадет в цель. Я попытался заменить «String []» на «объект», и он все еще не получил удар, что я нахожу странным. Что здесь происходит?

1 Ответ

0 голосов
/ 08 июня 2011

Вам может потребоваться украсить ваш веб-сервис атрибутом [ScriptService], чтобы позволить клиентским сценариям вызывать его. Также, если вы отправляете запрос 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');
    }
});
...