我新来CI,并在如何通过则params的疑问,我的方案是:笨传递多个检查参数回视图
1)形式的多选框,视为online_booking.php,用户会检查多个选项。
2)用户点击按钮调用json中的jq ajax post,这将得到控制器中的booking_process的回调参数。
3)返回的结果将在#result
div块的视图上打印。
OK,上面的过程工作正常,结果是打印像用户已经检查。
现在是我的问题,我想重新使用回调结果在视图中,即使我有结果打印在视图页上,但我不能使用结果进行进一步处理,我怎么可以使返回结果变成一个变量?
我曾尝试过几种方式,我试着用online_booking?selected=mutipleCheckedValue&sum=500
传递方法改变$ config ['permitted_uri_chars']的旧时尚方式,但只取得最后一个选中的值而不是所有选中的值,这意味着即使我检查了复选框与类型A + B + C,在URL中它只能显示类型C的值,我知道这在CI中不是一个好习惯,但如果找不到合适的解决方案可能有助于解决我的疑问。
我甚至尝试在会话中存储选中的值,如控制器$this->session->set_userdata('selected', $conf_type.":".$conf_charge);
上所示,它仍然只显示最后一次选中的值。
请给出一个关于如何克服这个问题的建议,因为我已经在这个部分花了很多时间。
online_booking.php查看:
<?php
$is_logged = $this->simplelogin->is_logged();
$active = $this->simplelogin->get_data_user('activate');
$user_email = $this->simplelogin->get_data_user('email');
if(!$is_logged) {
echo "<p>Please login to get access</p>";
}else if($active == 0){
echo "<p>Your account is inactive to proceed this page</p>";
}else{
?>
<p><h2>Online Booking</h2></p>
<p><div id="result_msg"></div></p>
<p>
<form id="conf_booking_form">
<input type="checkbox" name="cType[]" value="A,200"> Type A - USD200<br>
<input type="checkbox" name="cType[]" value="B,150"> Type B - USD150<br>
<input type="checkbox" name="cType[]" value="C,100"> Type C - USD100<br>
<input type="checkbox" name="cType[]" value="D,50"> Type D - USD50<br>
<input type="hidden" name="user_email" value="<?php echo $user_email ?>" />
<input type="button" id="btn_conf" name="" value="Book" />
<span id="wait"><img src="<?php echo base_url();?>assets/img/loader.gif" /></span><br />
</form>
</p>
<p><div id="result" style="color:#606;"></div></p>
<?php
}
?>
JQuery的阿贾克斯后:
$('#btn_conf').click(function(){
var parameters = $('#conf_booking_form').serialize();
//alert(parameters);
$.ajax({
url: baseurl + 'site/booking_process',
type: 'POST',
data: parameters,
dataType: 'json',
success: function(output_str){
if(output_str == "false"){
$('#result_msg').html("Select at least one type to proceed booking");
}else{
$('#result').html(output_str);
//window.location.replace(baseurl + 'site/online_booking?selected='+output_str.selected+'&sum='+output_str.sum);
}
}
});
});
控制器:
class Site extends CI_Controller {
public function online_booking() {
$this->load->view('header');
$this->load->view('online_booking');
$this->load->view('footer');
}
public function booking_process(){
$confTypes = $this->input->post('cType');
$user_email = $this->input->post('user_email');
$output_str = NULL;
$conf_charge_total = 0;
if(!empty($confTypes)){
foreach($confTypes as $confType){
$explode_value = explode(",", $confType);
$conf_type = $explode_value[0];
$conf_charge = $explode_value[1];
$conf_charge_total += $conf_charge; //sum up checked values
$output_str .= $conf_type.":".$conf_charge.",";
/*$output_str = array(
'selected' => $conf_type.','.$conf_charge,
'email' => $user_email,
'sum' => $conf_charge_total,
'flag' => 'true'
);*/
//$this->session->set_userdata('selected', $conf_type.":".$conf_charge);
}
$output_str .= $conf_charge_total;
//$this->session->set_userdata('sum_conf_charges', $conf_charge_total);
}else{
$output_str = "false";
}
echo json_encode($output_str);
}
}
谢谢。
感谢存放。如何通过URL传递参数来实现? – conmen
@conmen我对CI并不熟悉,但我认为如果你想加载一个URL,你总是可以使用curl。 –