0

我有这个网格

$("#email-grid").kendoGrid({
    dataSource: {
        transport: {
            read: {
                url: "operations/get_emails_sales_reps.php?salesRepsId=" + salesRepsId,
                type: "GET"
            },
            update: {
                url: "operations/edit_email.php?salesRepsId=" + salesRepsId,
                type: "POST",
                complete: function (e) {
                    $("#email-grid").data("kendoGrid").dataSource.read();
                }
            },
            destroy: {
                url: "operations/delete_email.php",
                type: "POST",
                complete: function (e) {
                    $("#email-grid").data("kendoGrid").dataSource.read();
                }
            },
            create: {
                url: "operations/add_email.php?salesRepsId=" + salesRepsId,
                type: "POST",
                complete: function (e) {
                    $("#email-grid").data("kendoGrid").dataSource.read();
                }
            },
        },


        schema: {
            data: "data",
            total: "data.length", //total amount of records
            model: {
                id: "SalesRepId",
                fields: {
                    EmailType: {
                        defaultValue: {
                            EmailTypeId: 2,
                            EmailTypeName: "Home"
                        }
                    },
                    EmailText: {
                        type: "string"
                    },
                    IsMainEmail: {
                        type: "boolean"
                    }
                }
            }

        },
        pageSize: 5,
    },
    height: 250,
    filterable: true,
    sortable: true,
    pageable: true,
    reorderable: false,
    groupable: false,
    batch: true,
    navigatable: true,
    toolbar: ["create", "save", "cancel"],
    editable: true,
    columns: [{
        field: "EmailType",
        title: "Type",
        editor: EmailTypeDropDownEditor,
        template: "#=EmailType.EmailTypeName#"
    }, {
        field: "EmailText",
        title: "Email",

    }, {
        field: "IsMainEmail",
        title: "Main?",
        width: 65,
        template: function (e) {
            if (e.IsMainEmail == true) {
                return '<img align="center" src ="images/check-icon.png" />';
            } else {
                return '';
            }
        }
        // hidden: true

    }, {
        command: "destroy",
        title: "&nbsp;",
        width: 90
    },

    ]
});

服务器端的代码 (get_emails_sales_reps.php)

<?php
require_once ("../lib/salesrep.php");
require_once ("../lib/helper.php");

// add the header line to specify that the content type is JSON
header("Content-type: application/json");

$options = array();

$result = SalesRep::getRepEmails($_GET["salesRepsId"]);
if (isset($result) && $result != null) {
    $result = _object_to_array($result);
    if (isset($result[0]) && is_array($result)) {
        for ($i = 0; $i < count($result); $i++) {
            $result[$i]["EmailType"] = array("EmailTypeName" => $result[$i]["EmailType"], "EmailTypeId" => $result[$i]["EmailTypeId"]);
        }
    } else {
        $result["EmailType"] = array("EmailTypeName" => $result["EmailType"], "EmailTypeId" => $result["EmailTypeId"]);
    }


    if (isset($result) || $result != null) {
        echo "{\"data\":" . json_encode($result) . "}";
    } else {
        echo "{\"data\": {} }";
    }
}
?>

当网格有一个或多个记录时,我可以添加新记录而不会出现任何错误,但是当网格没有记录时,我会尝试添加新记录。我收到这个错误

未捕获的类型错误:无法读取未定义的属性“长度”

请问,我该如何解决这个问题??

4

1 回答 1

0

我已经通过编辑 php 文件解决了这个问题。当结果为空(空)时,我必须像这样返回一个空的 json 数组

else {
      // the result is null 

    echo "{\"data\": [] }";
}
于 2013-06-25T10:41:24.850 回答