2015-02-07 40 views
0

我正在努力研究如何使用Codeigniter語言系統即時更改語言。所以我做了這個Ajax調用,但顯而易見,值不會改變,直到我重新加載頁面unlease我以某種方式打印出值或在由AJAX調用的函數中設置變量?這樣做的最好方法是什麼?Codeigniter:實時更改語言(AJAX)

<script> 
$(function(){ 
    $('.lang-choices a').on('click' , function() { 
     var language = $(this).attr("data-lang"); 
     $.ajax({ 
     type: "POST", 
     url: js_site_url('langswitch/switchLanguage'), 
     data: "requestedLanguage=" + language, 
     cache: false, 
     success: function(html){ 
     }, 
     error:function(exception){alert('Exeption:'+exception);} 
     }); 
    return false; 
    }); 
}); 
</script> 

switchLanguage功能

public function switchLanguage() 
    { 
    $language = $this->input->post('requestedLanguage'); 
    $this->session->set_userdata('site_lang', $language); 
    } 
+0

簡單的ajax調用不會重新渲染頁面。如果您想更改渲染頁面的語言,您需要搜索並用新語言字符串替換所有項目。 – Mouser 2015-02-07 12:54:47

回答

1

你的問題有點不清楚,所以我作出的假設是,你翻轉改變來自服務器的輸出後端標誌。使用這一假設,這裏就是我想要的數量級建議:

  • 在你success處理程序,重裝使用window.location.reload(true)的頁面。真正的參數是必不可少的,因爲它會訪問服務器以獲取新數據。 https://developer.mozilla.org/en-US/docs/Web/API/Location.reload

  • 您的成功處理程序似乎將html作爲參數。我不確定你是否實際發送的是基於你的switchLanguage函數,或者如果這是從複製+粘貼到某處的剩餘部分。如果你確實得到HTML數據和它的頁面數據,我會用context optionhttp://api.jquery.com/jquery.ajax/)向下過濾到您收到那麼該文件的內容與此數據

這裏是取代我的網頁內容後者的一個例子:

$.ajax({ 
    type: 'POST', 
    url: js_site_url('langswitch/switchLanguage'), 
    data: 'requestedLanguage=' + language, 
    cache: false, 
    context: document.body, 
    success: function(html){ 
     // or similar 
     $('body').replaceWith(html); 
    }, 
    error: function(exception) { 
     alert('Exeption:' + exception); 
    } 
});