2012-05-07 7 views
1

Я пытаюсь передать данные из функции JQuery с помощью функции AJAX и поймать ее в контроллере 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); 
     } 
    }); 

Я просто добавил: DATATYPE: 'JSON'

ПОЗДРАВЛЕНИЯ.

+0

К сожалению, это не сработало –

+0

Я сделал некоторый прогресс. Очевидно, использование | поскольку разделитель вызывает проблемы с PHP. вам нужно включить \ перед ним так, \ |. –

+0

какие проблемы? –

Смежные вопросы