嘿,我试图在laravel控制器中创建到路由的重定向,该控制器的调用来自js文件中的Ajax调用。
ex:
我加载了一个视图localhost:8000/viewone
,在此视图中,我运行了一个js代码,该代码对laravel路由进行Ajax调用:routeone
。
在链接到routeone
的控制器功能中,代码执行了一些数据处理,然后需要加载另一个视图:viewTwo
。
问题是没有发生viewTwo
加载,而我得到的只是Ajax调用的onsuccess
函数中return语句中的view HTML代码。
我尝试过的事情:
通过创建新的路由viewTwo
,创建一个与routeTwo
相称的控制器,
在我的routeone
控制器中,我使用会话数据重定向到此路由。
return redirect()->route('routeTwo')->with(['data'=>$data])
在routeTwo
控制器中,我获取会话数据并返回viewTwo
。
$data = \Session::get('data');
return view('viewTwo',['data'=>$data]);
它仍然不起作用。发生的情况是viewTwo
的加载是作为XHR请求而发生的,我得到的HTML页面将作为XHR响应数据加载到主浏览器视图(如第一个视图)中。
问题:当来自Js AJAX函数的调用时如何强制重定向到/加载视图。
答案 0 :(得分:0)
通过从ajax加载或呈现html在第一个视图页面中做到这一点
<div class="newView"></div>
通过ajax成功函数添加此行
$('.newView').html(data.html);
在控制器中
$view = view("viewnamewhatuhave",compact('data'))->render();
通过视图外观
$view = View::make('viewnamewhatuhaveset',[$data])->render();
return response()->json(['html' => $view]);