【问题标题】:Ajax get request laravel 5.4 resource controllerAjax 获取请求 laravel 5.4 资源控制器
【发布时间】:2017-08-16 15:21:08
【问题描述】:

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

使用 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');
            }
        })

关于资源控制器方法的结构应该调用 index 方法,我想在其中确定是否有 Ajax 请求传入。 如果我这样做了,我会在 Eloquent 模型中使用查询来搜索由搜索表单检索到的数据,当然我只想显示匹配的结果。

这是我的控制器代码:

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>

【问题讨论】:

  • 已编辑显示!
  • 奇怪。你能用ajax添加刀片吗,并确保jquery也被加载了
  • 抱歉,正确缩进需要一些时间:/

标签: php jquery ajax laravel


【解决方案1】:

blade文件很乱。尝试创建一个表单打开和表单关闭,并使按钮提交类型。并尝试将您的 ajax 更改为:

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

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

        });
    });
});

确保您正在加载 jquery。

【讨论】:

  • 试过了,但还是不行,在控制器中它甚至没有输入 else 语句,如果它是一个 ajax 请求,我希望它去。我这样做对吗?
【解决方案2】:

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

另外,您正在返回一个视图,您可能希望返回一个包含结果的 json 数组?

return $servers;

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

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

或者如果你想具体一点:

return response()-&gt;json($servers);

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-26
    • 2014-10-07
    • 2018-06-12
    • 2018-05-24
    • 2019-02-08
    • 2021-08-19
    • 2021-02-06
    • 1970-01-01
    相关资源
    最近更新 更多