Laravel 在 Ajax 响应中返回一个视图

Posted

技术标签:

【中文标题】Laravel 在 Ajax 响应中返回一个视图【英文标题】:Laravel return a view in an Ajax response 【发布时间】:2019-12-19 10:03:25 【问题描述】:

这里有人问过这个问题: How can I return a view from an AJAX call in Laravel 5? 还有其他几个问题。答案是混杂的,其中最重要的答案对我不起作用。我将在下面解释所有内容。

我当前有一个 Ajax 调用在我执行此操作时返回一个成功的响应:

    public function search (Request $request)
    
    $output =             echo '<td>Notes</td>';
                echo '<td colspan="8" id="orderNotes"><input type="text" name="notes" style="width: 100%;"></td>';
                echo '<td><button class="btn btn-info btn-fill btn-sm" id="saveNotes" data-orderNumber="';

// a bunch of more echos

    return Response($output); 

    

这给我带来了很多问题,因为我手动输入每个回声。相反,我想通过返回一个视图来替换它。

从上面的回答看来,这将是正确的答案:

public function search(Request $request)


    $title = "just testing";
    $view = view("pages.orders-display",compact('title'))->render();
    return response()->json(['html'=>$view]);

我创建了一个名为 orders-display 的视图。路径是 views/pages/orders-display.blade.php 这给了我一个内部 500 错误。

我指出的上述答案是公认的最高答案,但它对我也不起作用。

public function search(Request $request)



  $userjobs = 'this is a test';

  $returnHTML = view('pages.orders-display')->with('userjobs', $userjobs)->render();
  return response()->json(array('success' => true, 'html'=>$returnHTML));


任何想法我做错了什么?

【问题讨论】:

【参考方案1】:

它们不适合您,因为它们返回的是 JSON 响应而不是 html 响应。您应该直接返回视图,而不需要调用 render 方法。

试试这个

return view('pages.your_page');

return view('pages.your_page')->render();

【讨论】:

500 错误...但请记住它是从 Ajax 调用 @Laurentiu Turcu 返回的 @FabricioG 这不应该导致 500 错误,您问题中的解决方案也不应该。您应该启用应用程序的调试模式以跟踪错误,并将其发布在此处以帮助您。 据此:***.com/questions/38475451/…。您不应该在 Ajax 请求中返回视图。这会导致 500 错误@Laurentiu Turcu @FabricioG 您尝试在问题的第二个和第三个解决方案中返回 JSON,但您仍然得到 500 ......您的应用程序中还有另一个问题。我只是尝试在 API 路由中返回一个视图,它工作得很好。 Route::get('/test', function(Request $request) return view('welcome'); ); 你是对的,我相信问题出在视图本身。网络错误显示:“消息”:“未找到查看 [.pages.order-display.blade.php]。”,“异常”:“InvalidArgumentException”,@Laurentiu Turcu 正在深入研究。

以上是关于Laravel 在 Ajax 响应中返回一个视图的主要内容,如果未能解决你的问题,请参考以下文章

通过 Ajax 调用将数组发送到控制器,然后控制器在 Laravel 中返​​回具有该数组的另一个视图

如何将视图中的数组传递给 ajax 并在 Laravel 5 的控制器中访问?

在 jQuery $.ajax 中读取 Laravel JSON 响应

在 laravel 中通过 ajax 返回视图

如何在 ajax 调用时从 laravel 控制器函数返回视图?

Laravel Ajax 路由问题(404 响应)