Php 使用ajax更改语言Laravel4

Php 使用ajax更改语言Laravel4,php,jquery,ajax,laravel-4,Php,Jquery,Ajax,Laravel 4,我正在尝试使用Laravel4将语言从英语更改为法语,而不刷新页面(ajax),为了记住用户的选择,我将其存储在当前会话中,ajax请求工作正常,但语言不会仅在刷新整个页面(F5)后更改,这是我尝试执行的一个示例,以下是我的看法: <!DOCTYPE html> <html> <head> <meta name="_token" content="{{ csrf_token() }}" /> <title>Test Aj

我正在尝试使用Laravel4将语言从英语更改为法语,而不刷新页面(ajax),为了记住用户的选择,我将其存储在当前会话中,ajax请求工作正常,但语言不会仅在刷新整个页面(F5)后更改,这是我尝试执行的一个示例,以下是我的看法:

<!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>
这是我在控制器中的功能:

public function changeLanguage()
{
    Session::put('lang', 'fr');
    return 'success';
}
这就是我在App/start/global.php中存储用户语言的方式

App::setLocale(Session::get('lang', Config::get('App.locale')));

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

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

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

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

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

好吧,这似乎是唯一的解决方案,正如您所说的,这是一个好的解决方案,我认为这是我想要的正确答案,谢谢:)
public function changeLanguage()
{
    Session::put('lang', 'fr');
    return 'success';
}
App::setLocale(Session::get('lang', Config::get('App.locale')));