视图在 Redirect::to 上呈现,但在 POST 和表单验证后不显示

View is rendered on Redirect::to but not displaying after POST and form validation

我有以下方法从 angular 控制器提交表单:

$scope.register = function() {
        var player = {
            email: $scope.email,
            password: $scope.password,
            username: $scope.username,
            name: $scope.playername
        }

        $http.post('register', player);
}

这工作正常,以下路由处理此 http 请求(服务器端 Routes.php):

Route::post('register', array('uses' => 'HomeController@doRegister'));

然后我的 doRegister() 方法中有以下代码。这个想法是在推送到数据库之前验证表单输入。问题是,两个重定向中的 none:

public function doRegister(){
        //Creates validator 
        $validator = Validator::make(Input::all(), $player);
        //In case it fails, redirect to the same form. But it doesn't work
        if ($validator->fails()) {
            return Redirect::to('register')->withErrors($validator)->withInput(Input::except('password'));      
        } else {
            //Creates new user and writes to database. Redirect doesn't work either...
            return Redirect::to('lobby')->withSuccess('Registered!');
        }
}

真正奇怪的是它确实呈现了视图。点击提交后:

知道为什么会这样吗?提前致谢。

评论总结:

传统重定向在使用 ajax 时不起作用。通常浏览器会收到 302 响应,然后相应地重定向,但是 angulars $http.post 什么都不做。你必须自己处理。

关于验证和错误消息,this answer 展示了如何使用 JSON 将它们发回。

这是从上面链接的答案中提取的一个简单示例:

if ($validator->fails()){
    return Response::json(array(
        'success' => false,
        'errors' => $validator->getMessageBag()->toArray()
    ), 400);
}