javascript - 当呼叫来自 JS Ajax 时如何重定向到 Laravel 路由
问题描述
我正在尝试创建一个重定向到 laravel 控制器中的路由,其中对该控制器的调用来自 js 文件中的 Ajax 调用。
示例:我加载了一个视图localhost:8000/viewone
,在这个视图中我运行了一个 js 代码,它对 Laravel 路由进行 Ajax 调用:routeone
。在链接到的控制器函数中routeone
,代码进行了一些数据处理,然后需要加载另一个视图:viewTwo
。
问题是viewTwo
加载没有发生,我得到的只是onsuccess
Ajax 调用函数中返回语句中的视图 HTML 代码。
我尝试了什么:
viewTwo
通过创建新路由来创建一个控制器routeTwo
,在我的routeone
控制器中,我使用会话数据重定向到该路由。
return redirect()->route('routeTwo')->with(['data'=>$data])
在routeTwo
控制器中,我获取会话数据并返回viewTwo
.
$data = \Session::get('data');
return view('viewTwo',['data'=>$data]);
它仍然不起作用。发生的情况是viewTwo
加载作为 XHR 请求发生,并且我得到了作为 XHR 响应数据加载到主浏览器视图(如第一个视图)中的 HTML 页面。
问题:当调用来自 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]);
推荐阅读
- c - C - 不是结构或联合
- dojo - DOJO 下拉选择不起作用
- amazon-web-services - AWSLambdaException:您的访问已被 Amazon S3 拒绝,请确保您的请求凭证有权 GetObject for bucket
- javascript - 按字母数字对javascript数组进行排序
- mysql - Python MySQLdb 未使用命名占位符执行
- django - 模板标签中的动态字典名称
- c++ - 可以从非父线程调用 std::thread::join() 吗?
- javascript - 如何使用谷歌折线图两个不同长度的数组
- ruby - 如果评估在 Ruby 中返回 nil,我如何引发异常?
- php - 我无法使用 \Template::instance()->render 打开文件。我收到以下错误