每当我发送帖子请求到'任务/添加'我希望用户返回一个新页面,但我得到的只是弹出窗口中的简单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
});
});
以前有人遇到过这个问题吗?
答案 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')