Laravel 4:通过控制器操纵ajax数据

时间:2013-11-29 00:44:00

标签: javascript php jquery ajax laravel-4

我是Laravel和ajax的新人。我试图通过ajax从表单中获取数据,并通过相同的ajax在控制器中调用方法。控制器中的方法搜索数据库,然后返回一个由ajax处理的json响应(我还在考虑的最后一部分,我还没有真正完成它)。 让我告诉你我现在拥有的东西:

routes.php文件:

Route::get('/', 'HomeController@getIndex');
Route::post('/', 'HomeController@postIndex');

HomeController中:

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”方法,以便它被处理然后发回,对吧?除了我得到错误“未找到控制器方法[索引]。”当我实际上没有调用任何索引方法,因为它们的名称都不同。 如果不清楚的话,我对此很新,很抱歉。

更新: 就像我在评论中所说的那样,我发现将路由组合成一个路径::控制器摆脱了我以前的问题但不幸的是我仍然无法让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;
    });
}); 

1 个答案:

答案 0 :(得分:0)

只需在您的控制器中使用:

return json_encode(array('key' => 'val'));

对于数据的输入,我转移到一个适合我的JQuery插件。 Follow this link。 这就是函数的样子:

function someName(){
    // A plugin is used for this function
    $('#form_id').ajaxForm({
        url: '/',
        type: 'post',
        dataType: 'json',
        success: function(response){
            alert(response.key);
        }
    });
}

和相应的表格:

<form id="form_id">
    <!-- Put your fields here -->
    <input type="submit" onclick="someName()">
</form>

我建议你使用这个方法,这可能取决于插件,但是最简单。当然,您可以使用.submit()语句,而不是将其绑定到onclick事件