2012-05-07 45 views
1

我試圖通過AJAX從Jquery的可選函數傳遞數據,並在codeigniter控制器中捕獲它。沒有運氣!將ajax數據傳遞給codeigniter控制器

的Javascript

$(function() { 
    $("#selectable").selectable({ 
     selected: updatefilters, 
     unselected: updatefilters 
    }); 
    function updatefilters(ev, ui){ 
     var $selected = $('#selectable').children('.ui-selected'); 
     var filters = $selected.map(function(){return this.id;}).get().join("|"); 
     $.ajax({ 
      type: "POST", 
      url: 'updatefilters', 
      data: { filters: filters }, 
      success: function(data){ 
       $('#board').replaceWith(data.content); 
      } 
     }); 
    } 
}); 

控制器

public function updatefilters() 
    { 
     $filters = $this->input->post('data'); 
     print_r($filters); 
     $filterarray = split("|", $filters); 
     $this->thread_model->create_session_filter($filterarray); 
     $threads = $this->thread_model->get_threads(); 
     $data['json'] = '{"content":' + $threads + '}'; 
     $this->load->view('json_view', $data); // See step 4!!! 
    } 

瀏覽

json_view

<?php 
header("Content-Type: application/json"); 
echo $json; 
?> 

jquery的選擇視圖

<ol id="selectable"> 
    <li class="ui-state-default" id="everything">Everything!</li> 
    <li class="ui-state-default" id="entertainment">Entertainment</li> 
    <li class="ui-state-default" id="sci/tech">Sci/Tech</li> 
    <li class="ui-state-default" id="news">News</li> 
    <?php 

    if ($this->session->userdata('inactivefilter') == true) { 
      $inactivefilter = $this->session->userdata('inactivefilter'); 
      foreach ($inactivefilter as $new) 
       { 
        echo "<li class='ui-state-default' id='custom'>$new</li>"; 
       } 
     } 
    ?> 
</ol> 

在Firebug中,我可以看到通過AJAX傳遞的「過濾器」數據沒有被識別。

感謝

回答

1

試試這個:我只是說

$.ajax({ 
     type: "POST", 
     url: 'updatefilters', 
     dataType: 'json', 
     data: { filters: filters }, 
     success: function(data){ 
      $('#board').replaceWith(data.content); 
     } 
    }); 

數據類型: 'JSON'

Greatings。

+0

不幸的是,它沒有工作 –

+0

我取得了一些進展。顯然使用|作爲分隔符會導致PHP出現問題。你需要在它前面包括一個\ \。 –

+0

有什麼樣的問題? –

相關問題