【发布时间】:2013-12-15 02:51:29
【问题描述】:
我是 Laravel 和 ajax 的新手。我正在尝试通过 ajax 从表单中获取数据,并通过同一个 ajax 调用控制器中的方法。控制器中的方法搜索数据库,然后返回由 ajax 处理的 json 响应(最后一部分我还在考虑,我还没有真正做到)。 让我告诉你我现在拥有的东西:
Routes.php:
Route::get('/', 'HomeController@getIndex');
Route::post('/', 'HomeController@postIndex');
家庭控制器:
public function getIndex()
{
return View::make('index');
}
public function postIndex()
{
$match = Input::get('search');
$results = Customers::where('name', 'like', '%'.$match.'%')->get();
return Response::json(array('results' => $results));
}
还有我的 index.blade.php 视图:
<script>
$(document).ready(function() {
$('form#find').submit(function() {
$.ajax({
url : 'CustomerSearch/Public',
type: 'post',
dataType: 'json',
data: $('form#find').serialize(),
});
return false;
});
});
和形式:
{{ Form::open(array('url' => '', 'method' => 'POST', 'id' => 'find')) }}
{{ Form::text('search', '', array('class' => 'search-query', 'placeholder' => 'Search')) }}
{{ Form::submit('Submit', array('class' => 'btn btn-info')) }}
{{ Form::close() }}
所以我应该从表单中获取数据,然后将其发送到控制器中的“postindex”方法,以便对其进行处理然后发回,对吗?除了我得到错误“找不到控制器方法[索引]”。当我实际上没有调用任何索引方法时,因为它们的名称都不同。 我是新手,如果不清楚,请见谅。
更新: 就像我在评论中所说的那样,我发现将路由组合成一个 route::controller 摆脱了我以前的问题,但不幸的是我仍然无法让 ajax 将数据发送到我的控制器。我没有收到任何错误,但 ajax 不会向控制器加载任何内容。知道我的 ajax 有什么问题吗?:
$(document).ready(function() {
$('form#find').submit(function() {
$.ajax({
url : '{{URL::to('/')}}',
type: "POST",
dataType: 'json',
data: { search: $('.search-query').val() },
success: function(info){
console.log(info);
}
});
return false;
});
});
【问题讨论】:
-
我自己想通了,现在我知道答案了,这是一个非常愚蠢的问题!对于那些这可能会有所帮助:这里的 laravel 文档中有一个 restful 控制器语法:laravel.com/docs/controllers#restful-controllers 基本上我需要将 routes.php 更改为:Route::controller('/', 'HomeController');
-
说对了一半。您应该能够像显示的那样路由到特定的控制器操作(“Route::get('/', 'HomeController@getIndex');”)。这里可能发生了其他事情。
标签: javascript php jquery ajax laravel-4