Codeigniter:动态更改语言(AJAX)

时间:2015-02-07 12:39:12

标签: javascript php jquery codeigniter

我正在尝试使用Codeigniter语言系统来解决如何动态更改语言。所以我做了这个ajax调用,但是很明显,在重新加载页面之前,值不会改变unlease我以某种方式打印出值或在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);
  }

1 个答案:

答案 0 :(得分:1)

你的问题有点不清楚,所以我假设你正在翻转一个后端标志,改变服务器的输出。使用这个假设,这是我推荐的数量级:

  • success处理程序中,使用window.location.reload(true)重新加载页面。真正的论点是必不可少的,因为它会访问服务器以获取新数据。 https://developer.mozilla.org/en-US/docs/Web/API/Location.reload

  • 您的成功处理程序似乎将html视为一个arg。我不确定你是否实际上是根据你的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 );
    } 
});