我正在使用这个用于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: " ", 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
任何帮助??
答案 0 :(得分:0)
可能是你的ajax请求引发错误。您可以通过订阅数据源的错误事件来查看它。
如果出现错误,数据将在您的数据源中不同步。在您的情况下,我认为您的dataitem保持“脏模式”,因此数据源尝试为每次同步插入它们...