0

如何使用包含 PHP 会话的 id 刷新 div?

我的 JQ ajax 调用:

$('#btn_1').click(function(){
    var parameters = $('#booking_form').serialize();

    $.ajax({
        url: baseurl + 'site/process',
        type: 'POST',
        data: parameters,
        dataType: 'json',
        success: function(output_str){
            if(output_str == "false"){
                $('#result_msg').html("please select one");

            }else{
                $('#result').html(output_str);
                $('#loaddiv').load();

            }
        }
    });
});

这是我想在ajax回调后重新加载的地方:

<p>
<div id="result" style="color:#606;"></div>
</p>

<div id="loaddiv">
    <p><?php echo $selected; ?></p>
    <p><?php echo $sum_charges; ?></p>
</div>

$selected并且$sum_charges是在此过程中存储的php会话,该会话仅在我手动刷新时才会显示在页面中,当结果回调到页面时,如何使会话立即显示?

谢谢!!

编辑:

我在我的过程中使用了 codeigniter(在 CI 中仍然是新的),这是我的控制器的一部分,用于这个过程:

public function 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', $output_str);

        }

        $output_str .= $conf_charge_total;

        $this->session->set_userdata('sum_charges', $conf_charge_total);

    }else{
        $output_str = "false";
    }

    echo json_encode($output_str);
}
4

2 回答 2

0

ajax调用页面返回json你使用dataType: 'json'的,那么被调用页面应该返回一个json formatted stringlike

echo json_encode(array("selected"=>"abc","sum_charges"=>123));

在您的ajax function更改中,成功功能如下:

success: function(output_str){
    if(output_str == "false"){
        $('#result_msg').html("please select one");

    }else{
        $('#result').html(output_str);
        var str="<p>"+output_str.selected+"</p><p>"+output_str.sum_charges+"</p>";
        $('#loaddiv').html(str);
    }
}
于 2013-02-04T05:41:49.830 回答
0

如果您的 js 脚本在同一页面中,您可以这样做..

success: function(output_str){
        if(output_str == "false"){
            $('#result_msg').html("please select one");

        }else{
            $('#result').html(output_str);
            var divContent="<p><?php echo $selected; ?></p><p><?php echo $sum_charges; ?></p>"; //this will echo the latest session variable...
              $('#loaddiv').html(divContent);

        }
    }

更新

将您的会话变量作为 json 发送

PHP

 echo json_encode(array('selected'=>$selected,'sum_charges'=>$sum_charges,'output_str'=>'yourStr'));

查询

success: function(output_str){
        if(output_str == "false"){
            $('#result_msg').html("please select one");

        }else{
            $('#result').html(output_str.output_str);
            var dinContent="<p>"+output_str.selected+"</p><p>"+output_str.sum_charges+"</p>"; //this will echo the latest session variable...
              $('#loaddiv').html(dinContent);

        }
    }
于 2013-02-04T05:32:34.710 回答