所以我创建了一个简单的计数表,其中包含三列'id','type','value'。当有人点击按钮时,它会在此表中创建一个新行。
调用我的操作的JavaScript:
$('#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的问题。
答案 0 :(得分:1)
所以看起来这实际上是codeigniter 2的一个老问题:https://github.com/bcit-ci/CodeIgniter/issues/2473
在旧版本中,如果您尝试插入带有“select”一词的数据,那么您将获得多个插入。我将“类型”更改为“ux-choice”,而不是修复了我的问题。希望这有助于将来有这个问题的任何人!!