0

我不知道如何描述细节,你可以在这个视频中看到一个错误: http ://www.youtube.com/watch?v=D6NPd-j2erg&feature= youtu.be 这是我使用的代码:

$(document).ready(function () {
    var dataSource = new kendo.data.DataSource({
        transport: {
            read: {
                url: "/customer/get",
                dataType: "json",
                type: "POST"
            },
            update: {
                url: "/customer/edit",
                dataType: "json",
                type: "POST"
            },
            destroy: {
                url: "/customer/delete/",
                dataType: "json",
                type: "POST"
            },
            create: {
                url: "/customer/add",
                dataType: "json",
                type: "POST"
            }
        },
        batch: false,
        pageSize: 20,
        serverPaging: true,
        serverFiltering: true,
        serverSorting: true,
        schema: {
            data: "Data",
            total: "Total",
            model: {
                id: "CustomerId",
                fields: {
                    CustomerId: { editable: false, nullable: true },
                    Name: { validation: { required: true } },
                    Code: { type: "string", editable: false }
                }
            }
        }
    });

    $("#grid").kendoGrid({
        dataSource: dataSource,
        height: 430,
        filterable: true,
        sortable: true,
        pageable: {
            refresh: true,
            pageSizes: [10, 20, 30],
            buttonCount: 10
        },
        toolbar: ["create"],
        columns: [
            { field: "Name", title: "Name" },
            { field: "Code", title: "CODE", width: "100px" },
            { command: ["edit", "destroy"], title: " ", width: "200px" }],
        editable: "popup"
    });
});

我犯了什么错误吗?我添加了以下 Kendo Ui 库:

<script src="/Scripts/kendo/2013.1.319/jquery.min.js"></script>
<script src="/Scripts/kendo/2013.1.319/kendo.all.min.js"></script>
<script src="/Scripts/kendo/2013.1.319/kendo.aspnetmvc.min.js"></script>
<script src="/Scripts/kendo.modernizr.custom.js"></script>
4

1 回答 1

4

事实上,新版本的 jQuery 发生了重大变化,影响了 Kendo Q1 2013 版本 2013.1.319

http://jquery.com/upgrade-guide/1.9/#jquery-ajax-returning-a-json-result-of-an-empty-string

由于从服务器返回空结果以防万一一切都在服务器端正确执行 - 因为空结果不是有效的 json,所以会引发错误事件。

要解决此问题,我建议您从服务器返回空数组。

对于使用扩展的 ASP.NET 用户,他们可以使用:

return Json(new object[0].ToDataSourceResult(request,ModelState));

基本上更新/删除操作后来自服务器的有效结果应该类似于这个:

{"Data":[],"Total":0,"AggregateResults":null,"Errors":null}

这将由 ASP.NET MVC 用户的 ToDataSourceResult 扩展在内部解决,并使用下一个内部构建(我们很可能会在明天添加它),并且它也将被添加到文档的重大更改/故障排除部分。

于 2013-03-26T16:18:23.047 回答