在Kendo UI网格中添加记录功能被多次调用

时间:2013-06-19 09:43:00

标签: javascript ajax kendo-grid

我正在使用这个用于Keno UI网格的HTML代码

function loadPhoneGrid(salesRepsId){
                        $("#phone-grid").kendoGrid({
                        dataSource: {
                            transport: {
                                read: {
                                    url: "operations/get_phones_sales_reps.php?salesRepsId="+salesRepsId,
                                    type: "GET"
                               },
                                update: {
                                    url:   "operations/edit_phone_number.php?salesRepsId="+salesRepsId,
                                    type: "POST"
                                },
                                destroy: {
                                    url: "operations/delete_phone.php",
                                    type: "POST"
                                },
                                create: {
                                    url:  "operations/add_phone.php?salesRepsId="+salesRepsId,
                                    type: "POST",
                                },
                            },
                            schema: {
                                data:"data",
                                total: "data.length", //total amount of records
                                model: {
                                    id: "PhoneId",
                                    fields: {
                                        PhoneType: { defaultValue: { PhoneTypeId: 1, PhoneTypeName: "Work"} },
                                        PhoneNumber: { type: "string" },
                                        IsMainPhone: {type: "boolean", editalbe:true},
                                     }
                                }

                            },
                            pageSize: 5,
                        },
                        height: 250,
                        filterable: true,
                        sortable: true,
                        pageable: true,
                        reorderable: false,
                        groupable: false,
                        batch: true,
                        toolbar: ["create", "save", "cancel"],
                        editable: true,
                        columns: [
                            {
                                field:"PhoneType",
                                title:"Type",
                                editor: PhoneTypeDropDownEditor,
                                template: "#=PhoneType.PhoneTypeName#" 
                            },
                            {
                                field: "PhoneNumber",
                                title:"Phone Number",

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

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

                           ],


                    });

                 }

服务器端的代码是(add_phone.php)

<?php
require_once("../lib/Phone.php");

$phone = array();
foreach($_POST as $name => $value){
    $phone[$name] = $value;
}
Phone::AddPhoneNumber($_GET["salesRepsId"], $phone);
?>

我第一次添加了新记录。 add_phone.php正在调用一次,一切正常。当我尝试添加新记录时第二次(没有刷新页面),add_phone.php被调用两次。其中一个包含之前添加到数据库的第一个记录,第二个记录是新数据。

在结果中我有3条记录(第一次插入的2个相同数据)和一个新记录。

这是一个明确的例子(用firebug检查帖子请求)

首次点击保存按钮(假,(111)111-1111,4,传真)//输入此手机后(111)111-1111

第二次点击保存按钮(假,(111)111-1111,4,传真)除了(假,(222)222-2222,3,工作)//我添加了这个(222)222- 2222

任何帮助??

1 个答案:

答案 0 :(得分:0)

可能是你的ajax请求引发错误。您可以通过订阅数据源的错误事件来查看它。

如果出现错误,数据将在您的数据源中不同步。在您的情况下,我认为您的dataitem保持“脏模式”,因此数据源尝试为每次同步插入它们...