当从 laravel 控制器调用 html 时,猫头鹰轮播被破坏

Posted

技术标签:

【中文标题】当从 laravel 控制器调用 html 时,猫头鹰轮播被破坏【英文标题】:owl carousal is broken when html called from laravel controller 【发布时间】:2021-12-14 11:05:48 【问题描述】:

当我将 html 放入 laravel 视图刀片时,owl carousal 效果很好:

但是当我试图进行 ajax 调用(通过 json 响应,从控制器获取 HTML)时,它坏了:

我的刀片代码:(通过 ajax 调用在 searchResult id 中获取数据)

        <div class="owl-carousel bootcamp-slider" id="searchResult">

        </div>
        <div class="bootcamp-slider-btn owl-controls">
            <div class="owl-nav">
                <div class="owl-prev"><i class="fa fa-angle-left" aria-hidden="true"></i> 
               </div>
                <div class="owl-next"><i class="fa fa-angle-right" aria-hidden="true"></i> 
                </div>
            </div>
            <div class="owl-dots">
                <div class="owl-dot active"><span></span></div>
                <div class="owl-dot"><span></span></div>
                <div class="owl-dot"><span></span></div>
            </div>
        </div>
    </div>

来自控制器的代码:

foreach($data as $bootcamp)
               $output .= '
                    <div class="bootcamp-card">
                        <div class="row">
                            <div class="col-12 col-md-12 bootcamp-body">
                                <div class="bootcamp-thumbnail">
                                    <img style="width:100%!important;height:100%!important"
                                         src="img/cart/course-thumb.png" >
                                </div>

                                ....
                                ....
                                ....
                                <div class="p-0 pt-2 d-flex">
                                    <a href="#" class="form-control book-button" style="text- 
                               align: center;"
                                       data-toggle="modal"
                                       data-target="#bootcamp-registration">Book now</a>
                                    <a href="cart" class="add-to-cart">Add to cart</a>
                                </div>
                            </div>
                        </div>
                    </div>
               ';
           
        else
             $output .= '
                 <div>No Bootcamp found</div>
             ';
        

        $data = array(
            'searched_bootcamp' => $output
        );

        echo json_encode($data);

请检查 jquery 中的代码,我正在尽量减少代码:

$('select').on('change',function(e)
            e.preventDefault();

            let by_month= $('#by-month').val();
            let by_course = $('#by-course').val();

            searchBootcamp(by_month, by_course);
        )

        function searchBootcamp(by_month = '', by_course = '')
           $.ajax(
               url : "search-bootcamp",
               type : "GET",
               dataType : "JSON",
               data : by_month : by_month, by_course : by_course,
               success : function(data)
                   $('#searchResult').html(data.searched_bootcamp);
               
           ).done(function() 
               $('.bootcamp-slider').owlCarousel()
           );
        
        searchBootcamp();

【问题讨论】:

是否有任何 jquery 错误?你检查过控制台吗 不,它没有给出任何 jquery 错误 【参考方案1】:

您必须在从 ajax 添加 html 后响应 owl carousal。 ajax添加新html后,1次调用owl carousalinit

例子:

$.ajax(
  url: "test.html",
  context: document.body
).done(function() 
  // add html to body
  $(".owl-carousel").owlCarousel();
);

当多个替换html你可以销毁并重新初始化 示例:

let owl = $(".bootcamp-slider");
$.ajax(
  url: "test.html",
  context: document.body
).done(function() 
  // add html to body
  if (!owl.hasClass('owl-loaded')) 
    owl.owlCarousel();
   else 
    owl.trigger('destroy.owl.carousel');
    owl.owlCarousel();
  
);

【讨论】:

非常感谢,但它仅适用于第一个请求,当我 0n 更改选择时,它返回相同的问题,我在帖子底部分享我的 jquery 查看我的编辑答案

以上是关于当从 laravel 控制器调用 html 时,猫头鹰轮播被破坏的主要内容,如果未能解决你的问题,请参考以下文章

文件的间接路径,当从其他地方调用程序时

当从 Html 表单调用带有 HttpPost 的 ASP.NET CORE 3.1 操作时,服务器返回 405 错误 [关闭]

为 POST 视图返回 Redirect::back Laravel

PHP Laravel - Eloquent 在调用方法 json 时随机返回布尔字段,有时为 0 1,其他为 true false

无法从 URL Laravel 获取 ID

当从 UIActivityViewController 调用时,WhatsApp 在选择收件人后冻结