Laravel 5.2 post route返回普通的html文本

时间:2016-01-17 10:45:12

标签: ajax laravel post laravel-5.2

每当我发送帖子请求到'任务/添加'我希望用户返回一个新页面,但我得到的只是弹出窗口中的简单html文本。

Route.php代码

Route::post('tasks/add', function() {
    return view('secrets');
});

这是我的ajax请求:

$("#frm").submit(function(e){
             e.preventDefault();
             var customer = $("input[name=customer]").val();
             var details = $("input[name=details]").val();
             var dataString = 'customer='+customer+'&details='+details;

             $.ajax({
                url: "tasks/add",
                type:"POST",
                beforeSend: function (xhr) {
                    var token = $('meta[name="csrf_token"]').attr('content');

                    if (token) {
                          return xhr.setRequestHeader('X-CSRF-TOKEN', token);
                    }
                },
               data : dataString,
                success:function(data){
                    console.log(dataString);
                    alert(data);
                },error:function(){ 
                    alert("error!!!!");
                }
            }); //end of ajax

            });

        });

以前有人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:0)

您正在使用Ajax来调用Route方法。因此,当Route::post(...)返回视图'secrets'时,它会将其返回到Ajax方法并由data变量保持。在Routes文件中说return并不意味着重定向到某个视图,它就像任何其他返回值的函数一样。

您目前有alert(data),只是说data所保留的内容是警报,在这种情况下是您视图的html文字。

相反,请取出alert()并输入

window.location.replace('<path/to/secrets>')

在成功时重定向到您想要的页面。

假设您的Routes文件类似于:

Route::get('/secrets', function() {
    return view('secrets');
});

你可以说

window.location.replace('/secrets')