使用ajax在codeigniter中无法更新数据库

4
我已经从控制器传递了一个数组树到视图,并使用递归的助手将其显示为无序列表的形式。每个列表项都有一个按钮,可以向上移动一步。我的视图 div 如下所示:
<div id="div">
<?php 
   $ordering = count($trees[$grp->id]);                             
?>     
<a href="javascript:Swapit('swapper-first','swap')" onClick="showIFrame('<?php echo site_url('service_group_services/edit/0_' . $ordering . '_' . $grp->id); ?>');">
    <button type="button" class="btn btn-default btn-xs btn-label-left">
        <i class="fa fa-plus"></i>
    </button>
</a>                                      
<?php                                                   
    display_tree($trees[$grp->id], $grp->id);                                                            
?> 
</div>

<?php endforeach; ?>

在这里,display_tree是一个辅助函数:

<?php function display_tree($array, $grp) {

    foreach ($array as $value): {
        $ordering = 0;
        if (isset($value->childs[0])) {
            $val = $value->childs;
            $ordering = count($val);          
        }

        echo "\n<ul>";
        echo "\n<li>";

        if($value->type != 'SERVICE') {
            echo '<a href="javascript:Swapit('."'" .'swapper-first'."'" .','."'" .'swap'."'" .')" onClick="showIFrame('."'".'service_group_services/edit/'.$value->service.'_' . $ordering . '_'.$grp ."'" .')"><span> <i class="fa  fa-plus"></i></span></a>';
        }
        if($value->ordering != 0) {
            echo  '<a href="#" onclick="load_data_ajax('.$value->service_parent. ',' . $value->ordering . ',' . $value->service_group . ',' . $value->service . ')"><span> <i class="fa  fa-sort-up"></i></span></a>';
        }
        echo '<a href="service_group_services/delete/'.$value->service_parent. '_' . $value->service . '_' . $value->service_group . '_'. $value->ordering .'"><span> <i class="fa fa-times"></i></span></a>'. $value->name .'</li>';

        if (isset($value->childs[0])){
             $val = $value->childs;
            display_tree($val, $grp);
        }
        echo '</ul>';
    }
    endforeach;
}
?>`

控制器函数:

function move_up(){
     $parent = $this->input->post('service_parent');
     $ordering = $this->input->post('ordering');
     $group = $this->input->post('service_group');
     $service = $this->input->post('service');

     $s_p = $this->session->userdata('service_provider');
     $this->Mdl_service_group_services->up($s_p, $parent, $group, $ordering);
     $this->Mdl_service_group_services->up1($s_p, $service, $parent, $group, $ordering);
 }

一个模型是:
function up($s_p, $parent, $group, $ordering) {
    $data = array(
        'ordering' => $ordering   
    );
    $this->db->where('service_provider =', $s_p);
    $this->db->where('service_group =', $group);
    $this->db->where('service_parent =', $parent);
    $this->db->where('ordering =', --$ordering);
    $this->db->set($data);
    $this->db->update($this->_table_name);
}

function up1($s_p, $service, $parent, $group, $ordering) {
    $var = array(
        'ordering' => --$ordering
    );
    $this->db->where('service_provider =', $s_p);
    $this->db->where('service_group =', $group);
    $this->db->where('service_parent =', $parent);
    $this->db->where('service =', $service);
    $this->db->set($var);
    $this->db->update($this->_table_name);  
}

现在我正在尝试使用ajax更新数据库表的排序列。 Ajax代码如下:

var controller = 'service_group_services';
var base_url = '<?php echo site_url(); //you have to load the "url_helper" to use this function ?>';

function load_data_ajax(parent, ordering, group, service){
    $.ajax({
        'url' : base_url + controller + '/move_up',
        'type' : 'POST', //the way you want to send data to your URL
        'data' : 'service_parent='+parent+'ordering='+ordering+'service_group='+group+'service='+service,
        'success' : function(data){ //probably this request will return anything, it'll be put in var "data"
        var div = $('#div'); //jquery selector (get element by id)
            if(data){
                div.html(data);
            }
        }
    });
}

但是当我点击向上按钮时,没有任何反应。请帮助我。

你的控制台有任何错误吗? - jmgross
当我点击按钮m时,出现“POST http://localhost/qbotic//service_group_services/move_up 404 (未找到)”的错误。 - aug born
你的网站是否在 qbotic 目录中? - jmgross
是的,它在qbotic目录中。 - aug born
在您的ajax请求中,您忘记在数据中的每个参数之间添加& - jmgross
显示剩余5条评论
1个回答

1
您的AJAX请求存在问题。您忘记在要发送的data参数之间添加&分隔符:
function load_data_ajax(parent, ordering, group, service){
    $.ajax({
        ...
        'data' : 'service_parent='+parent+'&ordering='+ordering+'&service_group='+group+'&service='+service,
        ...
    });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接