jqGrid编辑行,找不到响应404

时间:2011-04-01 09:23:03

标签: web-services jqgrid request http-status-code-404

我几天前开始在我们的项目中使用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且消息未找到的响应。 我试图调试这个,因为检索工作,我将editurl更改为与url完全相同。然后在函数serializeRowData中,我操纵将要发布的数据,并将其替换为与发布到检索数据的Web服务方法的数据完全相同的数据。 换句话说,当我发布已编辑的行时,我在检索数据时执行完全相同的请求。因此,检索工作正常,而编辑却没有。

我检查了萤火虫的请求,我可以看到请求实际上并不完全相同。它们在一个参数上有所不同。

正在运行的请求有:

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

请求不起作用:

Accept: */*

在其他方面,他们是一样的。 这可能是错误吗? (这必须是因为其中一个正在工作......)。

任何人都可以帮我解决问题吗?

1 个答案:

答案 0 :(得分:1)

在我看来,你有一个打字错误。你应该使用

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

而不是

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

SaveDemandOpenHours在成功保存的情况下不返回任何数据,因此Accept标头的值并不重要。如果需要,您可以在您使用的dataType: 'json'中添加ajaxRowOptions