【问题标题】:Trouble with Session on Code IgniterCodeigniter 中的会话问题
【发布时间】:2026-01-01 22:50:01
【问题描述】:

我对代码点火器的会话有疑问。首先,我想建立一个高级搜索功能。高级搜索功能将允许用户使用多个类别进行搜索。用户搜索某物并成功返回结果后,左侧边栏会显示搜索键和一个“编辑按钮”。编辑按钮将允许用户转到上一页并更改他们的搜索键。这就是为什么,我需要使用会话来存储搜索键。但是在我设置会话并尝试检索值之后,出现了问题。

这是工作流程。 - 在 a.php 上设置会话 - 在 b.php 上的函数中获取会话值 - Ajax 到 b.php 以接收会话值并显示它。

关于信息,我在服务器端使用 php 和 code igniter。

这是代码:

一个.php

    if (!empty($params['modelname'])){
        $modelid = "";
        for($i = 0; $i < count($params['modelname']); $i++)
        {
            $modelid .= $params['modelname'][$i];
                if($i+1 < count($params['modelname']))
                {
                    $modelid .= ", ";
                }
        }
        $data = array(
            "modelname" => $modelid  
        );
        $this->session->set_userdata($data);
     ?>
     <span id="model"><strong><?php echo $modelid; ?><?php echo form_button('btnsearchmodel', 'Edit','class="btnsearchkata" id="btnsearchmodel"')?></strong></span>
     <div class="clear"></div>
     <?php }

b.php

public function getselectedmodel()
{
    $data = $this->session->userdata('modelname');
    echo $data;
}

c.php

function getCariModel()
   {
        var brandname = ""
        $(".brand").each(function(){
            if ($(this).is(':checked') ){
                brandname += $(this).val()+',';                    
            }
        });

        if(brandname != "")
        {
            $.ajax({
                type: "POST",  
                url: '<?php echo site_url("ajax_data/getselectedmodel"); ?>',
                dataType: 'json',
                data: {c: "ambilmodel"},
                success: function(data) {
                    alert(data);
                }
            });
        }
   }

问题是:当我没有收到数据时。当我尝试提醒数据时,警报根本不起作用。好像请求不成功

我想问题出在我设置会话时。但我真的不知道我的代码有什么问题。任何人都可以帮助我吗?谢谢

【问题讨论】:

  • a problem has occurred.究竟是什么问题?
  • 我无法接收数据,当我尝试提醒数据时,提醒不起作用,好像ajax没有成功。
  • 为什么不直接在 ajax 控制器中使用会话数据来从 javascript 发布?
  • 我试过了,但是它需要刷新页面来更新会话值。例如,会话值已更新,然后当我尝试显示它时,该值将是旧数据。

标签: php codeigniter session


【解决方案1】:

您在 javascript 中等待 JSON,但在您的控制器操作 getselectedmodel 中您没有 json_encode。试试这个:

public function getselectedmodel()
{
    $data = $this->session->userdata('modelname');
    $this->output->set_output(json_encode($data));
}

如果你仍然没有输出。尝试直接执行您请求的操作并更新您的问题。

【讨论】: