繁体   English   中英

从JS Ajax发出呼叫时如何重定向到Laravel路由

[英]How to redirect to Laravel route when call came from JS Ajax

我试图在laravel控制器中创建到路由的重定向,此控制器的调用来自js文件中的Ajax调用。

示例:我加载了一个视图localhost:8000/viewone ,在此视图中,我运行了一个对Laravel route: routeone进行Ajax调用的js代码。 在链接到routeone的控制器功能中,代码执行一些数据处理,然后需要加载另一个视图: viewTwo

问题是不会发生viewTwo加载,而我得到的只是Ajax调用的onsuccess函数中return语句中的view HTML代码。

我试过了

通过创建新的路由viewTwo来创建一个routeTwo routeone控制器,在我的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函数的调用时,如何强制重定向到/加载视图。

通过加载或从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]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM