我对 php 脚本有疑问,它添加的记录比预期的要多。我有一张大 table ,里面有几个“子表”,里面有人们的薪水及其分布:
John Smith # 10,000 # 20.00% # 50,000 # edit # delete
小飞侠#100,000#100.00%#100,000#编辑#删除
当您点击新人时,弹出表单,您键入所有信息,将人员添加到数据库,ajax 返回信息并将人员添加到列表末尾。这是问题,当我在一个“子表”中单击添加人时,它添加了一个人并正确打印,但是当我转到第二个“子表”并添加一个人时,它会添加人两次(插入两个相同的记录到数据库),如果我点击第三个“子表”上的添加人,它将添加一条记录三次......它应该只添加一次记录。这是我的 js 脚本:
$('.addbtt').on('click', function(){
value= "";
document.getElementById("updform").reset();
var glnumber = $(this).parent().parent().find('#glno').text();
var objid = glnumber.substring(7,12);
value += glnumber.substring(10,12);
if(objid=='51001'){
$('.modal-title').html("Add person - Full time");
$('#glnumber').empty().val(glnumber);
}else if(objid=='51002'){
$('.modal-title').html("Add person - Part time");
$('#glnumber').empty().val(glnumber);
}else if(objid=='51009'){
$('.modal-title').html("Add person - GA");
$('#glnumber').empty().val(glnumber);
}else if(objid=='51010'){
$('.modal-title').html("Add person - GE");
$('#glnumber').empty().val(glnumber);
};
$('#updform').submit(function(){
var formData = $(this).serialize();
$.post('includes/updatesal.php',formData,processData);
function processData(data){
if(value == 01){
$('#addperson1').before(data);
}else if(value == 02){
$('#addperson2').before(data);
}else if(value == 09){
$('#addperson3').before(data);
}else if(value == 10){
$('#addperson4').before(data);
}else{
alert("Your are doing something you shouldn't! :)")
};
}; //end of processData
return false;
});
});
我认为问题出在我的“添加人员按钮”上,因为它还向数据库中添加了两条记录。这是我的 php 函数:
$insertSQL1 = "INSERT INTO salaries (gl_number,name,pay_rate,distribution,annual)
VALUES ('".$glnumber."','".$name."','".$payRate."','".$dist."','".$annual."')";
$insertSQL1 .= "; SELECT SCOPE_IDENTITY() AS RECORD_ID";
$stmt1 = sqlsrv_query(Database::GetInstance()->databaseConnection, $insertSQL1);
# IF THERE IS AN ERROR
if(!$stmt1){
echo "Error";
}else{
$id = Database::GetInstance()->LastInsertId($stmt1);
}
# IF ALL QUERIES WERE SUCCSESSFUL, COMMIT THE TRANSACTION, OTHERWISE ROLLBACK
if($stmt1 && !$errors){
sqlsrv_commit(Database::GetInstance()->databaseConnection);
# FREE THE STATEMENT
Database::GetInstance()->FreeDBStatement($stmt1);
我已经花了一个星期的时间来解决这个问题,有人可以帮忙吗?
最佳答案
问题是由您的 .submit() 事件处理程序在 .click() 事件处理程序中引起的 - 所以您每次点击都会创建一个新的、相同的 .submit() 处理程序。
要修复,只需将 .submit() 处理程序从那里取出:
$('.addbtt').on('click', function(){
value= "";
document.getElementById("updform").reset();
var glnumber = $(this).parent().parent().find('#glno').text();
var objid = glnumber.substring(7,12);
value += glnumber.substring(10,12);
if(objid=='51001'){
$('.modal-title').html("Add person - Full time");
$('#glnumber').empty().val(glnumber);
}else if(objid=='51002'){
$('.modal-title').html("Add person - Part time");
$('#glnumber').empty().val(glnumber);
}else if(objid=='51009'){
$('.modal-title').html("Add person - GA");
$('#glnumber').empty().val(glnumber);
}else if(objid=='51010'){
$('.modal-title').html("Add person - GE");
$('#glnumber').empty().val(glnumber);
};
});
$('#updform').submit(function(){
var formData = $(this).serialize();
$.post('includes/updatesal.php',formData,processData);
function processData(data){
if(value == 01){
$('#addperson1').before(data);
}else if(value == 02){
$('#addperson2').before(data);
}else if(value == 09){
$('#addperson3').before(data);
}else if(value == 10){
$('#addperson4').before(data);
}else{
alert("Your are doing something you shouldn't! :)")
};
}; //end of processData
return false;
});
关于javascript - 多次将相同的记录添加到数据库而不是一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19274918/
当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/
我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby数组,我们在StackOverflow上找到一
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以
当谈到运行时自省(introspection)和动态代码生成时,我认为ruby没有任何竞争对手,可能除了一些lisp方言。前几天,我正在做一些代码练习来探索ruby的动态功能,我开始想知道如何向现有对象添加方法。以下是我能想到的3种方法:obj=Object.new#addamethoddirectlydefobj.new_method...end#addamethodindirectlywiththesingletonclassclass这只是冰山一角,因为我还没有探索instance_eval、module_eval和define_method的各种组合。是否有在线/离线资
我注意到类定义,如果我打开classMyClass,并在不覆盖的情况下添加一些东西我仍然得到了之前定义的原始方法。添加的新语句扩充了现有语句。但是对于方法定义,我仍然想要与类定义相同的行为,但是当我打开defmy_method时似乎,def中的现有语句和end被覆盖了,我需要重写一遍。那么有什么方法可以使方法定义的行为与定义相同,类似于super,但不一定是子类? 最佳答案 我想您正在寻找alias_method:classAalias_method:old_func,:funcdeffuncold_func#similartoca
我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_