2015-04-16 2 views
4

Я передал дерево массивов из контроллера для просмотра, и я использую помощник для рекурсии, чтобы отобразить его в виде неупорядоченных списков. У меня есть кнопка с каждым элементом списка, чтобы перейти на один шаг вверх. На мой взгляд ДИВ как это:Не удалось обновить базу данных с помощью ajax в codeigniter

<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); 
} 

сейчас Я пытаюсь обновить столбец упорядочения данных e table с 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); 
      } 
     } 
    }); 
} 

Но когда я нажимаю на кнопку вверх, ничего не происходит. Пожалуйста, помогите мне.

+0

Есть ли у вас какие-либо ошибки в консоли? – jmgross

+0

Да, m gettin this error «Синхронный XMLHttpRequest в основном потоке устарел из-за его пагубных последствий для конечного пользователя». –

+0

И при нажатии кнопки m gettin «POST http: // localhost/qbotic // service_group_services/move_up 404 (Not Found)» –

ответ

1

В Вашем запросе AJAX есть проблемы. Вы забыли добавить & seprator между каждыми параметрами data вы хотите отправить:

function load_data_ajax(parent, ordering, group, service){ 
    $.ajax({ 
     ... 
     'data' : 'service_parent='+parent+'&ordering='+ordering+'&service_group='+group+'&service='+service, 
     ... 
    }); 
} 
Смежные вопросы