我想通过 AJAX @yield 或 @include 一个 laravel 刀片模板与另一个模板,这怎么可能?

Posted

技术标签:

【中文标题】我想通过 AJAX @yield 或 @include 一个 laravel 刀片模板与另一个模板,这怎么可能?【英文标题】:I want to @yield or @include one laravel blade template with another by AJAX, how is it possible? 【发布时间】:2017-01-12 22:43:35 【问题描述】:

是否可以通过 AJAX 将一个刀片视图文件@yield 或 @include 与另一个刀片一起使用?

【问题讨论】:

考虑使用 Vue.js 或其他前端框架或只是 vanilla JS 将 html 加载到浏览器中后的页面中。 Blade是服务器端,JS是客户端。 【参考方案1】:

您可以做的是,对控制器进行 ajax 调用,然后从那里返回渲染的视图。

JS:

        $.ajax(
            method: "GET",
            url: "route-to-ajax-call",
            dataType: 'json',
            data:
            
                param1:param1,
                param2:param2
            ,
            success: function (res)
            
                $('#div').html(res.data);
            ,
            error: function()
            
                alert('Failed');
            
        );

控制器:

public function returnAjax(Request $request);
    $parameter1 = $request->param1;

    $view = View::make('route-to-your-view', ['parameter1' => $parameter1]);

    return response()->json(['status' => 'success', 'data' => $view]);

【讨论】:

【参考方案2】:

您可以使用 AJAX 将 HTML 加载到您的页面中,但这与 Blade 没有太大关系,因为 Blade 在服务器端呈现。

使用 jQuery 的.load():

<script>
    $('#targetDiv').load( url('/route/that/returns/the/html') )
</script>

【讨论】:

以上是关于我想通过 AJAX @yield 或 @include 一个 laravel 刀片模板与另一个模板,这怎么可能?的主要内容,如果未能解决你的问题,请参考以下文章

在Ember组件的Yielding上下文中测试属性

ES6中generator(生成器)函数的应用

为啥我无法通过 Ajax 获取 WP 自定义字段值或发布 ID?

什么更快? Ajax 加载 JSON 或 Ajax 加载完整输出

yield(C# 参考)

深入解释yield和Generators