为了快速参考,我附上了我想要的图片。我想更新(更改内容)而不更新整个页面(不刷新页面)。单击白框上的链接或按钮应从数据库中获取数据,并将其显示在红框中。当然,作为答案,您首先要写的是“Ajax !!!”,但由于我是新手laravel framework
,我想知道实现这一目标的最佳方法是什么,我应该javascript
直接在视图中还是在控制器,以及如何通过控制器来做到这一点?如果您需要更多信息,请告诉我。
修改后的问题,除了回答的问题之外,还有其他更好的方法吗
首先我们需要设置一些路由。您也可以使用控制器执行此操作。
Route::get('home', function()
{
return View::make('home');
});
Route::get('someRoute', function()
{
return View::make('someView');
});
对于主视图,我将添加一个脚本部分:
//home.php
<html>
<head>
<script>
$('a.ajax').click(function(e){
e.preventDefault();
var pageURL = $(this).attr('href');
$('#ajaxContent').load(pageURL);
});
</script>
</head>
<body>
<div class="wrapper">
<a href="{{URL::to('someRoute')}}" class="ajax">Click Here</a>
<div id="ajaxContent"></div>
</div>
</body>
</html>
如果您使用刀片模板,这里有一个实现
//main.blade.php
<html>
<head>
@yield('styles')
</head>
<body>
<div class="wrapper">
@yield('content')
</div>
@section('scripts')
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
@show
</body>
</html>
//home.blade.php
@extends('main')
@section('content')
<a href="<?=URL::to('someRoute')?>" class="ajax">Click Here</a>
<div id="ajaxContent"></div>
@stop
@section('scripts')
@parent
$('a.ajax').click(function(e){
e.preventDefault();
var pageURL = $(this).attr('href');
$('#ajaxContent').load(pageURL);
});
@stop
jQuery
如果您使用ajax 功能进行此更新,那对您来说会更好。一个简单的代码可以是这样的
$('a.ajax').click(function(e){
e.preventDefault();
var pageURL = $(this).attr('href');
$('#divID-to-be-updated').load(pageURL);
});
更多关于 jQuery 中的 ajax 功能可以从http://jqapi.com/#p=load阅读