Javascript Codeigniter 2-插入表中创建重复项

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

所以我创建了一个简单的计数表,其中包含三列“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的一个问题。

因此,这似乎实际上是codeigniter 2的一个旧问题:


在旧版本中,如果您尝试插入带有“select”一词的数据,则会得到多个插入。我把我的“类型”改为“ux选择”,它解决了我的问题。希望这有助于任何人在未来有这个问题

您可以在第一次单击之后禁用单击事件,直到ajax执行结束。您应该在控制器操作中添加一些日志记录。即使AJAX请求只触发一次,代码也可能执行两次。这是codeigniter的问题。比尔,你使用PDO和sqlite吗?我现在在家,不记得我是否使用了pdo,但我肯定没有使用sqlite。我使用的是mysql。事实上,我使用的是mysql的PDO驱动程序。谢谢你让我知道。