首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ajax改变语言Laravel4

用ajax改变语言Laravel4
EN

Stack Overflow用户
提问于 2015-01-25 13:55:13
回答 1查看 608关注 0票数 0

我试图在不刷新页面( ajax )的情况下使用Laravel4将语言从英语转换为法语,并且为了记住用户的选择,我将其存储在当前会话中,ajax请求正常工作,但是语言不仅在刷新整个页面(F5)之后才会改变,这是我试图做的一个例子,以下是我的观点:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <meta name="_token" content="{{ csrf_token() }}" />
    <title>Test Ajax</title>
</head>
<body>
<div id="div">{{ trans('test.welcome') }}</div>  <br />
{{ trans('test.test') }}
<a id="change_language" href="javascript:void(0);">Change language</a>

<form method="post" action="javascript:void(0);">
    <input id="name" type="text" />
    <input id="go" type="submit" value="Go" />
    <div id="feedback"></div>
</form>
{{ HTML::script('js/jquery.js') }}
{{ HTML::script('js/ajax.js') }}
</body>
</html>

这是我的ajax请求:

代码语言:javascript
复制
$("#change_language").click(function(){

        $('#feedback').html('<img src="./img/loading.gif" alt="Loading ..."/>');
        $.ajax({
            url:'change-language',
            type: "POST",
            headers: {
                'X-CSRF-Token': $('meta').attr('content')
            },
            success:function(result){
                $('#feedback').html(result);    
          }});
        }); 

这是我的route.php文件:

代码语言:javascript
复制
Route::group(array('before' => 'auth'), function() {
    Route::group(array('before' => 'csrf'), function() {

    Route::post('change-language', array(
        'as'    => 'change-language',
        'uses'  => 'AjaxController@changeLanguage'
        ));

    });
));

这是我在控制器内的功能:

代码语言:javascript
复制
public function changeLanguage()
{
    Session::put('lang', 'fr');
    return 'success';
}

这就是我在App/start/global.php中存储用户语言的方式

代码语言:javascript
复制
App::setLocale(Session::get('lang', Config::get('App.locale')));

所以,我要问的是:有没有办法只刷新页面中的特定部分,例如具有divid="div",而不刷新整个页面?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-25 19:36:49

您将需要重新加载整个页面,因为字符串是在刀片文件解析期间呈现的。Ajax请求将使用的区域设置保存在会话中,但不会再次呈现页面。

如果您想在不重新加载的情况下更改页面内容,则必须使用JavaScript:

  • 用Ajax发送“地区更改”请求
  • 返回要更改的字符串(例如,作为JSON对象)
  • 使用JS将所需的DOM元素更改为接收到的区域设置

这可以(取决于您想要更改的元素的数量)进行大量的工作。我仍然建议重新加载页面,我不认为它会改变网页的可用性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28137183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档