Javascript Codeigniter 2-插入表中创建重复项
所以我创建了一个简单的计数表,其中包含三列“id”、“type”、“value”。当有人单击某个按钮时,它会在此表中创建一个新行 调用我的操作的javascript:Javascript Codeigniter 2-插入表中创建重复项,javascript,php,jquery,mysql,codeigniter,Javascript,Php,Jquery,Mysql,Codeigniter,所以我创建了一个简单的计数表,其中包含三列“id”、“type”、“value”。当有人单击某个按钮时,它会在此表中创建一个新行 调用我的操作的javascript: $('#myModal .ux-options .btn').on('click', function(){ var value = $(this).data('value'); // Update the session variable via ajax
$('#myModal .ux-options .btn').on('click', function(){
var value = $(this).data('value');
// Update the session variable via ajax
$.ajax({
type: 'POST',
dataType: 'json',
url: 'applications/tallyAnswer',
cache: false,
data: {selection: value}
});
$('#myModal').modal('hide');
});
控制器操作:
function tallyAnswer() {
$selection = $this->input->post('selection');
if ($selection) {
$this->tally->updateTally(array(
'type' => 'ux-select',
'value' => $selection
));
$this->session->set_userdata(array(
'answeredQuestion' => 'true'
));
$response = array(
'status' => 'success',
'selection' => $selection
);
} else {
$response = array(
'status' => 'fail',
'data' => array(
'selection' => 'Must choose a selection'
)
);
}
$this->output->set_content_type('application/json');
$this->output->set_output(json_encode($response));
}
模型方法:
public function updateTally($tally) {
$this->db->insert('tallies', $tally);
}
因此,一个人单击一个按钮,它就会在表中插入一个新行。简单。但是,发生的情况是,用户单击按钮,它会插入两行相同的内容。我已经检查过了,只进行了一次ajax调用。我不知道为什么会这样。我被迫使用旧的codeigniter代码,因此我认为这可能是使用2.2的一个问题。因此,这似乎实际上是codeigniter 2的一个旧问题:
在旧版本中,如果您尝试插入带有“select”一词的数据,则会得到多个插入。我把我的“类型”改为“ux选择”,它解决了我的问题。希望这有助于任何人在未来有这个问题 您可以在第一次单击之后禁用单击事件,直到ajax执行结束。您应该在控制器操作中添加一些日志记录。即使AJAX请求只触发一次,代码也可能执行两次。这是codeigniter的问题。比尔,你使用PDO和sqlite吗?我现在在家,不记得我是否使用了pdo,但我肯定没有使用sqlite。我使用的是mysql。事实上,我使用的是mysql的PDO驱动程序。谢谢你让我知道。