不支持Kendo ui odata请求回调

时间:2014-05-24 09:39:27

标签: kendo-ui odata

我正在使用Kendo UI处理odata网格。 问题是ajax请求保持包含回调参数。这导致此错误:不支持回调参数。当我在没有回调的情况下手动执行请求时,我的odata服务工作正常。 有人知道如何解决这个问题吗?

$("#grid").kendoGrid({
        dataSource: new kendo.data.DataSource({
            type:"odata",
            serverPaging: true,
            serverFiltering: true,
            serverSorting: true,

            transport: {
                contentType: "application/json; charset=utf-8",
                type: "GET",
                read: "/odata/FestivalSignUps?$inlinecount=allpages&$expand=PrefferedTasks/Task,AvailableDays,ApplicationUser",
                dataType: "json",
                parameterMap: function (options, type) {
                    var paramMap = kendo.data.transports.odata.parameterMap(options);
                    delete paramMap.$format; // <-- remove format parameter.

                    return paramMap;
                }
            },


            pageSize: 10,
            schema: {
                data: function (data) {
                    return data["value"];
                },
                total: function (data) {
                    return data["odata.count"];
                },

            }
        }),
        filterable:true,
        sortable: true,
        pageable: {
            refresh: true,
            pageSizes: true,
            buttonCount: 5
        },
        columns: [
            { field: "ApplicationUser.Email", width: 90, title: "Email" },

            { field: "ApplicationUser.FirstName", width: 90, title: "Voornaam" },

            { field: "ApplicationUser.LastName", width: 90, title: "Achternaam" },
            { field: "PrefferedTasks", width: 90, title: "Taken",
                template: "#= formatTasks(data) #"},
            { field: "Beschikbaar", width: 90, title: "Taken" }
        ]

    });

更新 这段代码解决了这个问题:

 $("#grid").kendoGrid({
        dataSource: new kendo.data.DataSource({                

            type: 'odata',

            transport: {
                read: {
                    url: "/odata/FestivalSignUps?$expand=PrefferedTasks/Task,AvailableDays,ApplicationUser",
                    dataType: "json"
             },

            },



            schema: {
                data: function (data) {
                    return data["value"];
                },
                total: function (data) {
                    return data["odata.count"];
                },

            },
            pageSize: 20,
            serverPaging: true,
            serverFiltering: true,
            serverSorting: true
        }),

        filterable:true,
        sortable: true,
        pageable: {
            refresh: true,
            pageSizes: true,
            buttonCount: 5
        },
        columns: [
            { field: "ApplicationUser.Email", width: 90, title: "Email" },

            { field: "ApplicationUser.FirstName", width: 90, title: "Voornaam" },

            { field: "ApplicationUser.LastName", width: 90, title: "Achternaam" },
            { field: "PrefferedTasks", width: 90, title: "Taken",
                template: "#= formatTasks(data) #"},
            {
                field: "AvailableDays", width: 90, title: "Beschikbaar",
                template: "#= formatDays(data) #"
            },
        ]

    });

1 个答案:

答案 0 :(得分:8)

我在写的一篇博文中介绍了这个问题以及其他一些问题:Server-Side Filtering Using KendoUI With MVC4 WebAPI and OData.


如果您要查询自己的数据,并且不需要执行跨域请求,我们就可以不使用jsonp。为此,我们只告诉Kendo dataType读取操作是“json”。

var dataSource = new kendo.data.DataSource({
    type: 'odata', // <-- Include OData style params on query string.
    transport: {
        read: {
            url: "/api/Albums",
            dataType: "json"; // <-- The default was "jsonp".
        }
    }
});