【问题标题】:How to reload the content of my page with ajax (Using Laravel View/Layout)如何使用 ajax 重新加载我的页面内容(使用 Laravel 视图/布局)
【发布时间】:2015-04-29 07:49:44
【问题描述】:

我正在使用 Laravel 4,

我想重新加载视图并更改内容(基本上是更改语言)

当我到达索引时: 在我的控制器上:

public function getIndex()
    {
        $lang = $this->retrieveLang("FR");
        $this->layout->content = View::make('cv.cv', array('lang' => $lang));
    }

内容扩展布局

@extends('layout.cvlayout')
@section('content')

我的 ajax 函数:

    <script>
    $(".changeLang").click(function(event) {
        event.preventDefault();
        var url = $(this).attr("href");
        $.ajax({
            url: url,
            cache: false,
            beforeSend: function() {
                $(".loaderOverlay").fadeIn();
            },
            success: function(html) {
                $("#container").html(html);
                $(".loaderOverlay").fadeOut();
                pageCvInit();
                initAjaxHeadline();
            }
        });

    });
    </script>

url 可能是 ****/fr 所以在控制器中有这样的方法:

public function getFr() { $lang = $this->retrieveLang("FR"); return View::make('cv.cv', array('lang' => $lang)); }

我试图在

上设置条件

@extends() @section() @stop

部分,但是每次调用ajax函数时,整个body都会经过ajax方法(甚至是,标签),我只想重新加载body。

我该怎么做? 非常感谢

【问题讨论】:

标签: php ajax laravel-4


【解决方案1】:

不确定你的意思是整个身体通过 ajax 传递,你只是想重新加载身体。

尝试更改您的 on success 以过滤掉收到的 html 的正文。

success: function(html) {
    $("#container").html($(html).filter('body').html());
    $(".loaderOverlay").fadeOut();
    pageCvInit();
    initAjaxHeadline();
}

【讨论】:

  • 听起来不错,我会尝试留下反馈,感谢您的建议
【解决方案2】:

你只需要重新加载你想要看到变化的div,成功放这个:

$("#mydiv").load(location.href + " #mydiv");

【讨论】:

  • 不应该使用加载而不是$.ajax().success?
  • 我会尝试这种方式,之后留下反馈,谢谢
  • 在你的情况下,只需给 body 一个 id 或直接使用 body 关键字,你就会看到结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 2012-12-15
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多