Laravel 5 Laravel:控制器未将我远程传送(重定向)到页面

Laravel 5 Laravel:控制器未将我远程传送(重定向)到页面,laravel-5,Laravel 5,从Ajax中,控制器确实得到了我想要的关键字,因为它确认了它(因为我重复了它),我的想法是,在得到该关键字时,它应该重定向到我想要的页面。但是,它没有,而且,虽然它确实更改了区域设置,但我必须重新加载页面,否则,它不会在页面上显示任何翻译和区域设置更改。在Firebug中,当我将鼠标悬停在帖子上时,我得到了我想去的正确URL:某种程度上,但控制器不会更改我的web浏览器的http URL框以转到那里 我在这里简化了控制器代码,但实际上我希望它根据它得到的关键字转到不同的URL,这是我将使用swi

从Ajax中,控制器确实得到了我想要的关键字,因为它确认了它(因为我重复了它),我的想法是,在得到该关键字时,它应该重定向到我想要的页面。但是,它没有,而且,虽然它确实更改了区域设置,但我必须重新加载页面,否则,它不会在页面上显示任何翻译和区域设置更改。在Firebug中,当我将鼠标悬停在帖子上时,我得到了我想去的正确URL:某种程度上,但控制器不会更改我的web浏览器的http URL框以转到那里

我在这里简化了控制器代码,但实际上我希望它根据它得到的关键字转到不同的URL,这是我将使用switch语句或IF-else等来做的

所以控制器就这么简单:

public function changelanguage()
    {
        $lang = \Input::get('locale');
        echo "I got $lang";
        Session::put('locale', $lang);
        return redirect('/es');
    }
如果我不使用ajax而是使用表单,那么我不需要重新加载,表单的操作会使控制器更改区域设置并在不重新加载的情况下翻译页面。但是我需要使用ajax,在任何情况下,控制器都会正确获取语言的关键字('en'、'es'、'de'等),因此它应该从那里获取关键字并将我重定向到URL页面,但它不会移动

如果您对Ajax感兴趣,请看这里,但正如我所说,它确实发送了关键字

$(document).ready(function(){           
            $('.choose-language').on('click', function(e){
            e.preventDefault();
            var selectedlanguage = $(this).data('value');
            $.ajax({  // so I want to send it to the controller
            type:"POST",  // via post 
            url: 'language',  
            data:{'locale': selectedlanguage},



            });   // HERE FINISHES THE $.POST STUFF           

        }); //HERE FINISHES THE CLICK FUNCTION       

    }); // HERE FINISHES THE CODE
路线

Route::post('language', array(

   'as'   =>'language',
   'uses' => 'LanguageController@changelanguage'

));

如果您试图在AJAX请求的脚本中执行重定向,那么它将不起作用。您不能通过AJAX从脚本请求重定向,否则人们将进行各种恶意重定向

相反,在AJAX请求上设置一个“成功”处理程序,如果请求成功,它将刷新页面。它可以简单到:

var url = '/language';
var data = {
  locale: $(this).data('value');
};
var request = $.post(url, data)
  .success(function (response) {
    // Script was successful; reload page
    location.reload();
  });

我不确定您是如何允许用户选择区域设置的,但由于您需要以任何方式重新加载,我认为AJAX在这里是没有意义的。只需使用一个传统表单,将新的区域设置提交给操作,在会话/cookie/which中设置区域设置,然后重定向回引用页面。

您好,谢谢。我的任务是多语言站点。人们从下拉菜单中选择一种语言,你知道他们只需单击一下就可以工作。因此,这将把他们带到网站的/en/或/es/部分了解他们的语言。我将从您指出的线索开始,通过成功等等,但它必须转到不同的url,这取决于它是否通过了es de it etcare,然后您是否会说,实际上我甚至不需要联系控制器和更改区域设置?我可以直接在页面部分选择en es de it等,我甚至不需要ajax,只需要a href标记,但语言环境会翻译页面。然而,我不认为这会让我节省任何翻译工作,因为我必须在Lang目录下创建字典。。。