【问题标题】:passing ajax data to codeigniter controller将ajax数据传递给codeigniter控制器
【发布时间】:2012-05-07 22:14:53
【问题描述】:

我试图通过 AJAX 从 Jquery 的可选函数中传递数据,并在 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 传递的“过滤器”数据未被识别。

谢谢

【问题讨论】:

    标签: php ajax jquery-ui codeigniter


    【解决方案1】:

    试试这个:

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

    我刚刚加了:dataType: 'json'

    伟大的。

    【讨论】:

    • 我取得了一些进展。显然使用 |作为分隔符会导致 PHP 出现问题。你需要在它前面加上一个\,所以\|。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    相关资源
    最近更新 更多