2013-02-04 35 views
0

我怎樣才能刷新包含PHP會話的ID div?jquery刷新div塊一次顯示php會話

我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會話,會話只有當我手動刷新頁面時纔會顯示在頁面中,當頁面的結果回調時,如何讓會話立即顯示?

謝謝!

編輯:

我用笨(仍然是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); 
} 
+0

你有在同一頁上你的js腳本...或者你正在將其保持在單獨的js文件? – bipen

+0

據我所知你想在處理'baseurl +'site/process''頁面後更新'div#loaddiv'。 –

+0

@bipen,我的.js文件是分開的。 – conmen

回答

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')); 

JQUERY

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); 

     } 
    } 
+0

不幸的是我的js文件是單獨的,任何其他解決方法? – conmen

+0

其他解決方法是將會話變量作爲json從服務器發送並顯示出來... – bipen

+0

更新..檢查出來.. – bipen

0

了AJAX調用頁面返回json當你使用dataType: 'json',那麼所謂的頁面應該返回json formatted string,如

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); 
    } 
} 
+0

我已嘗試更改並且loaddiv仍然需要刷新頁面另一次顯示會話結束。 – conmen

+0

@conmen當頁面第一次加載時,它會通過變量'$ selected'和'$ sum_charges'顯示'default session values',然後你點擊一個按鈕,這些值應該根據'baseurl +'site/process ''頁面,對嗎? –

+0

是的,我希望會話中的這些值用於進一步處理,這就是爲什麼我不能通過'output_str.selected'輸出。 – conmen