我正在尝试如何使用Codeigniter语言系统动态更改语言。所以我进行了这个ajax调用,它有效,但很明显,在我重新加载页面之前,值不会改变。我以某种方式打印出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);
}
您的问题有点不清楚,所以我假设您正在翻转一个后端标志,该标志会更改服务器的输出。使用这个假设,以下是我建议的数量级:
-
在
success
处理程序中,使用window.location.reload(true)
重新加载页面。真正的参数是必不可少的,因为它会去服务器获取新数据。https://developer.mozilla.org/en-US/docs/Web/API/Location.reload -
您的成功处理程序似乎将html作为arg。我不确定你是否真的是基于
switchLanguage
函数发送的,或者这是复制+粘贴后剩下的。如果您确实正在获取HTML数据,并且它是页面数据,我会使用context
选项(http://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 );
}
});