Laravel:使用AJAX请求呈现部分视图

dab*_*aba 9 ajax jquery laravel laravel-4

我正在尝试制作单页CRUD应用程序,我正在使用AJAX和jQuery.在这种情况下,我提交表单并异步存储我的数据库中的新国家/地区,然后使用新数据呈现部分视图.

这是我的脚本和从数据库中检索国家并返回部分视图的方法.

$('#create-country-form').submit(function(event) {
    $.post('/country/store', $('#create-country-form').serialize(), function() {
        $.get('/country/all', function(data) {
            $('#countries-table').empty();
            $('#countries-table').append(data['html']);
        });
    });
    event.preventDefault();
});

class CountryController extends BaseController {

    public function all() {
        $countries = Country::All();

        $html = View::make('countries.list', compact('countries'))->render();

        return Response::json(['html' => $html]);
    }

    // ...

}
Run Code Online (Sandbox Code Playgroud)

但是,我不喜欢使用jQuery在页面中实际呈现视图的想法,感觉这应该是Laravel的工作.

我怎样才能使用Laravel渲染局部视图以及使用AJAX,而不必将该工作委托给jQuery(append()empty())?

Mub*_*har 6

传递您的视图以查看帮助程序,将其呈现为变量并将该变量作为对AjAx的响应返回.

$view=view('your-view-blade');
$view=$view->render();
$responseData->responseSuccess($view);
Run Code Online (Sandbox Code Playgroud)

在AjAx的回调中,您可以使用呈现的HTML,您可以将HTML附加到任何元素.


Lau*_*nce 3

你越来越困惑了。

Laravel已经在进行部分渲染了。您正在调用View::make()并将渲染的视图返回到$html.

然后,您将渲染的视图传递给 jQuery,它只是显示提供给它的数据 - 它本身不执行任何计算。

  • 是的,我知道 Laravel 正在渲染视图,但它必须是 jQuery 告诉返回的数据必须分配给特定的 DOM 元素。Laravel 不能用 Blade 做到这一点吗? (2认同)