Ajax get request laravel 5.4资源控制器

时间:2017-08-16 15:21:08

标签: php jquery ajax laravel

我一段时间以来一直在寻找类似的问题,但我找不到真正有助于解决问题的方法。

使用Laravel 5.4。

所以我有一个资源控制器及其索引方法,它返回一个附加了一些数据的视图。 然后我想从返回的视图中发出一个ajax请求,这是一个搜索请求。

e.preventDefault();
        let q = $('#inputserver').val();
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        $.ajax({
            url: "/servers",
            type: 'GET',
            data: {'data': q},
            success: function(response){
                console.log('Successo');
            }
        })

对于如何构造资源控制器的方法应该调用索引方法,我想在其中识别是否有Ajax请求传入。 如果我这样做,我将使用Eloquent Model中的查询搜索搜索表单检索到的数据,当然我只想显示匹配的结果。

这是我的控制器代码:

if(!$request->ajax()){
        $colonna = 'id';
        $servers = Server::orderBy($colonna, 'desc')->paginate(10);
        return view('servers.index', array('servers' => $servers));
    }
    else{
        $servers= Server::where('name', '=', $request->data)->paginate(10);
        return view('servers.index', array('servers' => $servers));
    }

问题是没有任何事情发生,所以甚至没有考虑ajax请求,有人可以帮助我吗?我几乎可以肯定这个问题是我忘记或不考虑的一些显而易见的事情。 提前感谢您,如果您需要更多信息,我会进行编辑。

修改

这是我有Route::resource('servers', 'ServerController');

的路线

EDIT2:

我很抱歉 ids 是意大利语,但我当然在使用jQuery时正确选择它们。

<div class="input-group mb-2 mr-sm-2 mb-sm-0">
     <div class="input-group-addon">
          <span>
             <i class="fa fa-search"></i>
          </span>
     </div>
     {{Form::text('search', null, array('class' => 'form-control', 'id' => 'inputserver' , 'placeholder' => 'Cerca..'))}}
     <span class="input-group-btn">
           <button class="btn btn-default" type="button" id="cercaserver">Go!</button>
    </span>

2 个答案:

答案 0 :(得分:0)

刀片文件很乱。尝试创建一个打开的窗体并关闭窗体并使按钮提交类型。并尝试将您的ajax更改为:

$(document).ready(function() {
    $('#cercaserver').on('submit', function (e) {
        e.preventDefault();
        var input = $('#inputserver').val();

        $.ajax({
            type: "GET",
            url: './servers',
            data: {input: input},

        });
    });
});

确保加载jquery。

答案 1 :(得分:0)

你什么意思都没有发生?当ajax请求被触发时,控制台中显示了什么?

此外,您还是要返回一个视图,您可能想要返回结果的json数组?

return $servers;

Laravel会自动将其转换为JSON响应

https://laravel.com/docs/5.4/responses#creating-responses

或者如果你想具体:

return response()->json($servers);

https://laravel.com/docs/5.4/responses#json-responses

编辑: 我想我已经知道了这个问题,在您的资源控制器函数index中,是否有一个名为$request的参数?它可能不存在,并且肯定会抛出500内部服务器错误,因为您在条件中使用它。