在codeigniter中单击按钮后如何删除一些会话数组段
Posted
技术标签:
【中文标题】在codeigniter中单击按钮后如何删除一些会话数组段【英文标题】:How to remove some session array segment after click button in codeigniter 【发布时间】:2017-02-23 16:48:50 【问题描述】:我该怎么做。请帮帮我。
这是我的控制器功能
public function payment_plan()
$result = new stdClass();
$result->status = FALSE;
$post_data = $this->input->post();
if ($post_data)
$payment_plan = $post_data['payment_plan'];
$value = $post_data['value'];
$deleted_plan = $this->input->post('key');
$payment_plans = $payment_plan."/".$value.",";
$payment_session = $this->session->userdata('payment_plans');
if($payment_session == NULL)
$array_one = array();
array_push($array_one, $payment_plans);
$this->session->set_userdata('payment_plans', $array_one);
else
$session_two= $this->session->userdata('payment_plans');
array_push($session_two, $payment_plans);
$this->session->set_userdata('payment_plans', $session_two);
$final_session = $this->session->userdata('payment_plans');
$this->data['payment_plans'] = $final_session;
//var_dump($final_session);
$result->status = TRUE;
$this->load->view('cms/payment_plan', $this->data);
如果我点击查看页面$deleted_plan
中的删除按钮,通过jQuery填充。
这是我的 jQuery 代码
$(".key").click(function ()
var key = $(this).attr('id');
jQuery.ajax(
type: "POST",
url: "<?php echo base_url(); ?>" + "property" + "/" + "payment_plan",
dataType: 'html',
data: key: key,payment_plan: payment_plan, value: value,
success: function (data)
if (data)
// $("#payment_plans").html(data);
);
);
我的问题是单击删除按钮后如何删除会话数组中的数组段。
【问题讨论】:
你可以在函数 $this->session->unset_userdata('session_name'); 中使用点击事件; 如果我使用 $this->session->unset_userdata('session_name');所有数组元素未设置 你能在这里写下你的示例会话数组和想要的会话结果吗? 首先将会话存储在变量中,然后尝试拼接数组以删除发布的密钥,然后用所需的拼接数组覆盖会话。 根据您的代码,您真正要做的是将被删除的计划添加到会话变量中。每次使用 array_push() 推送$payment_plans
时,您都在会话中添加已删除的计划。这是假设在 POST 中发送的“key”、“payment_plan”和“value”用于已删除的计划。条件$payment_session == NULL
表示会话中没有设置付款计划。如果是这种情况,那么将没有任何可删除的内容。所以我认为这个条件永远不会得到满足。 $deleted_plan
变量未设置。原因?
【参考方案1】:
试试这个,希望对你有帮助
if($deleted_plan)
foreach($final_session as $k => $session)
if(isset($session[$deleted_plan]))
unset($final_session[$k][$deleted_plan]);
$final_session = array_values($final_session);
$this->session->set_userdata('payment_plans', $final_session);
【讨论】:
【参考方案2】:你可以参考下面的例子:
让take an array and set in session
点赞
$array_one = array(0=>'plan1',1=>'plan2',2=>'plan3');
$this->session->set_userdata('payment_plans', $array_one);
现在要取消设置特定元素,首先get session into a variable like here $arra
$arra = $this->session->userdata('payment_plans');
Unset specific array element
你想取消设置就像你想remove 'plan1'
unset($arra[0]); //0 is key of plan1
Set result array into session
再次
$this->session->set_userdata('payment_plans', $arra);
$arra = $this->session->userdata('payment_plans');
print_r($arra);
或
您可以使用直接取消设置会话元素
$array_one = array(0=>'plan1',1=>'plan2',2=>'plan3');
$this->session->set_userdata('payment_plans', $array_one); //set session
unset($_SESSION['payment_plans'][0]); //unset specific element. 0 is key of session array
$arra = $this->session->userdata('payment_plans'); // get session array
print_r($arra); // display session array
【讨论】:
以上是关于在codeigniter中单击按钮后如何删除一些会话数组段的主要内容,如果未能解决你的问题,请参考以下文章