この 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: " ", 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
何か助けて??