【问题标题】:Laravel, search input error GET http://127.0.0.1:8000/meusprocessos/processos/search/Anula 404 (Not Found)Laravel,搜索输入错误 GET http://127.0.0.1:8000/meusprocessos/processos/search/Anula 404 (Not Found)
【发布时间】:2023-01-08 01:17:35
【问题描述】:

我在 laravel 上做一个项目,我有一个搜索输入,我使用 jquery 来搜索这个词。

但是我收到以下错误,但我不知道我做错了什么。

获取http://127.0.0.1:8000/meusprocessos/processos/search/"word"404(未找到)

这里恢复了html:

@extends('adminlte::page')

@section('title', 'Dashboard')

@section('content')
    <link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css">
        <div class="col-md-9 mb-5">
            <div class="box-tools pull-right">
                <div class="has-feedback">
                    <form>
                        <input type="text" name="search" class="form-control input-sm" id="search" value="" placeholder="Procurar Processo pelo nome">
                       <!-- <a type="submit" class="btn btn-primary" id="processosSearch">Procurar</a> -->
                    </form>
                </div>
            </div>
            <div id='processos'>
            </div>
        </div>
    </div>

    <script src="https://code.jquery.com/jquery-3.6.2.min.js"
            integrity="sha256-2krYZKh//PcchRtd+H+VyyQoZ/e3EcrkxhM8ycwASPA=" crossorigin="anonymous"></script>
    <script>

        $("#refreshProcessos").on('click', function () {
            $("#processos").html("<img src=' https://flevix.com/wp-content/uploads/2019/07/Curve-Loading.gif' >")
            $("#processos").load("{!! route('meusprocessos.processos') !!}")
        });

        $("#search").on("keyup", function() {
            var val = $.trim(this.value);
            //val = val.toLowerCase();
            //console.log(val);
            $("#processos").load("{!! route('meusprocessos.processosSearch') !!}"+ "/" + val)
        });

        $(document).on('click', 'a.readProcesso', function (e) {
            var id = $(this).attr("data-id")
            //console.log(id);
            $("#processos").html("<img src=' https://flevix.com/wp-content/uploads/2019/07/Curve-Loading.gif' >")
            $("#processos").load("{!! route('meusprocessos.processo') !!}" + "/" + id)
        });

        $("#processos").html("<img src=' https://flevix.com/wp-content/uploads/2019/07/Curve-Loading.gif' >")
        $("#processos").load("{!! route('meusprocessos.processos') !!}")

    </script>
@stop

这里的路线:

Route::get('meusprocessos/processos/search', [App\Http\Controllers\MeusProcessosController::class, 'processosSearch'])->name('meusprocessos.processosSearch');

这里德控制器:

public function processosSearch($val)
{
    echo $val;
    $search = $val;
    $processos = Processo::where('name', 'like', '%' . $search . '%')
        ->where('funcionario_id', \auth()->user()->id)
        ->get();
    $departamentos = Departamento::all();

    return view('meusprocessos.processosSearch')->with([
        'processos' => $processos,
        'departamentos' => $departamentos
    ]);
}

它根本不会进入视图,但我不知道我做错了什么。这可能是我应用路线的方式,但我不知道如何以不同的方式进行。

我认为不需要其余代码,但它在这里:

https://github.com/Maneneco/EmailManager

【问题讨论】:

  • 您是否已将本地仓库提交并推送到 git 仓库?我看不到路线或控制器。
  • 您声明的路线不接受第 4 个子项,将其更改为 Route::get('meusprocessos/processos/search/{val}'

标签: php jquery laravel search routes


【解决方案1】:

要修复您的代码,您需要将 $val 变量添加到路由中:

Route::get('meusprocessos/processos/search/{val}', [AppHttpControllersMeusProcessosController::class, 'processosSearch'])->name('meusprocessos.processosSearch');

话虽如此,我还想建议您在想要搜索路径时使用 post 请求,而不是在 url 中传递搜索查询,而应该在请求正文中传递它。

是这样的:

路线/web.php

Route::post('meusprocessos/processos/search', [AppHttpControllersMeusProcessosController::class, 'processosSearch'])->name('meusprocessos.processosSearch');

在您的 jQuery 搜索中:

$("#processos").post("{!! route('meusprocessos.processosSearch') !!}", { search: val });

然后在你的控制器中:

public function processosSearch(Request $request)
{
    $val = $request->search;
    echo $val;
    $search = $val;
    $processos = Processo::where('name', 'like', '%' . $search . '%')
        ->where('funcionario_id', uth()->user()->id)
        ->get();
    $departamentos = Departamento::all();

    return view('meusprocessos.processosSearch')->with([
        'processos' => $processos,
        'departamentos' => $departamentos
    ]);
}

当然不要忘记在你的控制器中使用请求,在顶部:

use IlluminateHttpRequest;

【讨论】:

    猜你喜欢
    • 2021-06-24
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    相关资源
    最近更新 更多