如何让远程JSON与ASP.NET中的Kendo网格一起使用

Jam*_*mar 3 asp.net json kendo-ui

我可以使用以下代码成功地对我的服务进行AJAX调用:

var serverData = { "ZoneParent": "123" };

        var request = $.ajax({
            type: "POST",
            url: "/./Services/Reports.svc/getZones",
            contentType: "application/json",
            dataType: "json",
            jsonp: null,
            jsonpCallback: null,
            data: JSON.stringify(serverData)
        });


        request.done(function (msg) {
            alert(JSON.stringify(msg));
        });

        request.fail(function (jqXHR, textStatus) {
            alert("Request failed: " + textStatus);
        });
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用我的Kendo网格实现相同的调用时,我收到错误

传入消息具有意外的消息格式"原始".该操作的预期消息格式是'Xml','Json'

对于getZones.我的服务调用与DataTables一起工作正常,但我想潜在地切换到Kendo.我已经搞砸了好几天无济于事.该应用程序不是MVC.这是我的Kendo代码片段:

var dataSource = new kendo.data.DataSource({

        transport: {

            read: {

                url: "/./Services/Reports.svc/getZones",

                dataType: "JSON",

                data: { zoneParent: "123" },

                    type: "POST"
            },

            parameterMap: function (data, operation) {
                    return kendo.stringify(data);
                }
        },

            schema: {

                data: "d"
            }
    });

    var grid = $("#allGrids").kendoGrid({

        dataSource: dataSource,

        height: 200
    });
Run Code Online (Sandbox Code Playgroud)

Pet*_*bev 5

由于cfeduke提出了类似的建议,您可以尝试将contentType添加到传输读取配置的读取对象,就像在$ .ajax调用中一样.

例如

var dataSource = new kendo.data.DataSource({

    transport: {

        read: {

            url: "/./Services/Reports.svc/getZones",

            dataType: "json",

            contentType: "application/json",

            data: { zoneParent: "123" },

                type: "POST"
        },

        parameterMap: function (data, operation) {
                return kendo.stringify(data);
            }
    },
Run Code Online (Sandbox Code Playgroud)