Laravel:使用AJAX请求呈现部分视图
我正在尝试制作单页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]); } // ... }
但是,我不喜欢使用jQuery在页面中实际呈现视图的想法,感觉这应该是Laravel的工作。
我如何使用AJAX渲染部分视图,而不必将该工作委托给jQuery( append()
和empty()
)?
你很困惑。
Laravel 已经在进行部分渲染。 您正在调用View::make()
并将呈现的视图返回到$html
。
然后你将渲染的视图传递给jQuery,它只是显示给它的数据 – 它没有进行任何计算本身。
将视图传递给查看帮助程序,将其呈现为变量并将该变量作为对AjAx的响应返回。
$view=view('your-view-blade'); $view=$view->render(); $responseData->responseSuccess($view);
在AjAx的回调中,您可以使用呈现的HTML,您可以将HTML附加到任何元素。
在视图文件之前使用字符串方法
return (String) view('Company.allUserAjax');