0

この HTML コードをキノ UI グリッドに使用しています

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 が一度呼び出され、すべて正常に動作しています。2 回目 (ページを更新せずに) 新しいレコードを追加しようとすると、add_phone.php が 2 回呼び出されます。それらの1つは以前にデータベースに追加された最初のレコードを含み、2番目は新しいデータです。

結果には、3 つのレコード (最初の挿入の 2 つの同じデータ) と 1 つの新しいレコードがあります。

これは明確にするための例です(firebugで投稿リクエストを調べます)

保存ボタンを最初にクリック (false, (111) 111-1111, 4,Fax) // この電話番号 (111) 111-1111 を入力した後

2 回目の保存ボタンのクリック (false, (111) 111-1111, 4,Fax) に加えて (false, (222) 222-2222, 3,Work) // これを追加した後 (222) 222-2222

何か助けて??

4

1 に答える 1

0

ajax リクエストでエラーが発生する可能性があります。データソースのエラー イベントをサブスクライブすることで確認できます。

エラーが発生した場合、データはデータソースで同期されません。あなたの場合、データアイテムは「ダーティモード」のままだと思うので、データソースは同期ごとにそれらを挿入しようとします...

于 2013-08-14T15:48:21.963 に答える