如何使用Ajax在Laravel中添加/包含视图

时间:2016-08-04 08:14:05

标签: ajax laravel laravel-5.2 blade laravel-blade

我有点卡在一个地方。我有一些小HTML sections的视图,当它们组合在一起时会提供完整的HTML页面。我正在尝试使用website builder构建Jquery,其中我有一个drop event,其中添加了views

例如,我HTMLslideshow

<div id="slideshow" data-nitsid="2">
    <div class="revolution-slider">
        <ul>
            <!-- SLIDE  -->
            @foreach($contents->slider as $sliders)
                <li data-transition="{{ $sliders->transition }}" data-slotamount="{{ $sliders->slotamount }}" data-masterspeed="{{ $sliders->masterspeed }}">
                    <!-- MAIN IMAGE -->
                    <img src="{{ URL::asset($sliders->url) }}" alt="">
                </li>
            @endforeach
        </ul>
    </div>
</div>

在我的JQuery代码中:

nitsbuilder.dropeventhandler = function ($item, $position) {
    var nits_id = $item.data('nitsid');
    $.ajax({
        method: 'POST',
        url: dropurl,
        data: { nits_id: nits_id, _token: token},
        dataType: 'json',
        success: function (data) {
            nitsbuilder.adder($item, $position, data);
        }
    });

}

在我html codesdatabase之前,我更容易提取html并添加到HTML页面,现在我有html in views,我怎么能{ {1}}此push/includeHTML codeview,以便我的nitsbuilder.adder函数执行通过我的控制器放置视图。

我现在的ajax request是:

Controller

请指导我。感谢

2 个答案:

答案 0 :(得分:3)

您可以使用\ View :: make

从刀片视图轻松创建html字符串

e.g。让我们假设你有以下文件夹结构

  • 项目
    • ...
    • ressources
    • 的观点
      • 片段
      • snippetA
      • snippetB

您现在可以创建一个接受&#34;名称&#34;的路线/控制器。参数,然后执行以下操作

$name = "snippetA"; // get this from parameters

$html = \View::make("snippets.$name")->render();

您可能还需要根据您的观点添加变量

$name = "snippetA"; // get this from parameters
$errors = []; // error variable might be needed

$html = \View::make("snippets.$name", compact('errors'))->render();

然后您可以返回此html字符串

return ['html' => $html];

从你的ajax done函数访问它。

我希望这会有所帮助

答案 1 :(得分:2)

假设您的html位于名为abc.blade.php的视图文件中,您可以在json中从控制器返回渲染视图。

return response()->json([
'htmlcode' => View::make('abc')->render();
]);