Строка редактирования jqGrid с ответом 404 не найдена - PullRequest
0 голосов
/ 01 апреля 2011

Я начал использовать jqGrid в нашем проекте несколько дней назад, и теперь у меня есть проблема, которую я не могу решить.Ниже мой код:

var colModel = JSON.parse(gridResult.ColModel);

var grid = $("#tblGrid").jqGrid({
    url: './WebServices/Demand.asmx/GetDemandOpenHoursTwo',
    ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
    serializeGridData: function (data) {
        return JSON.stringify(data);
    },
    datatype: 'json',
    mtype: 'POST',
    jsonReader: {
        root: function (obj) { return obj.d.rows; },
        page: function (obj) { return obj.d.page; },
        total: function (obj) { return obj.d.total; },
        records: function (obj) { return obj.d.records; }
    },
    height: 148,
    rowNum: 10,
    rowList: [10, 20, 30],
    colNames: gridResult.Columns,
    colModel: colModel,
    pager: "#gridPager",
    viewrecords: true,
    caption: "Öppetider",
    hidegrid: false,
    toolbar: [true, "top"],
    editurl: './WebServices/Demand.ascx/SaveDemandOpenHours',
    ajaxRowOptions: { contentType: 'application/json; charset=utf-8' },
    serializeRowData: function (data) {
        return JSON.stringify(data);
    }
});

И у меня есть кнопка, которая вызывает метод saveRow:

toolbar.find('.te-save').click(function () {
    gr = grid.getGridParam('selrow');
    if (gr !== null) {
        grid.saveRow(gr, false);
    }
});

Все хорошо работает с извлечением данных в сетку.Но когда я звоню saveRow, я получаю ответ со статусом 404 и сообщением NOT FOUND.Я попытался отладить это, и так как получение работает, я изменил editurl на точно такой же, как URL.А затем в функции serializeRowData я манипулирую данными, которые будут опубликованы, и заменяю их теми же данными, что и данные, отправленные в метод веб-службы, который извлекает данные.Другими словами, при получении данных я выполняю тот же запрос, что и при публикации отредактированной строки.Следовательно, получение работает, а редактирование - нет.

Я проверил запросы в firebug и вижу, что запросы на самом деле не совпадают.Они отличаются одним параметром.

Работающий запрос имеет:

Accept: application/json, text/javascript, */*; q=0.01

А неработающий запрос имеет:

Accept: */*

По-другому онитот же самый.Может ли это быть ошибка?(Должно быть так, потому что один из них работает ..).

Кто-нибудь может мне помочь с решением моей проблемы?

1 Ответ

1 голос
/ 01 апреля 2011

Мне кажется, что у вас есть ошибка ввода. Вы должны использовать

editurl: './WebServices/Demand.asmx/SaveDemandOpenHours'

вместо

editurl: './WebServices/Demand.ascx/SaveDemandOpenHours'

SaveDemandOpenHours не возвращает данных в случае успешного сохранения, поэтому значение заголовка Accept не очень важно. Если это необходимо, вы можете добавить dataType: 'json' в ajaxRowOptions, который вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...