【问题标题】:After successful getting the result from filter how to show in blade file in Laravel 8成功从过滤器获取结果后如何在 Laravel 8 的刀片文件中显示
【发布时间】:2021-04-03 20:25:52
【问题描述】:

我正在处理搜索页面中的过滤器部分,但问题是在主搜索页面中,所有结果都从控制器循环,现在我使用 jquery 进行过滤器过程,但事情令人困惑。如何以正确的方式做到这一点?

所以这里是过程:

第 1 步:用户搜索“支持”之类的内容,然后系统转到 searchController 文件并给出结果

return view('/search')->with(["documents" => $results, "filters" => $filters]);

这里$filter表示类别过滤器;像这样

然后,当用户单击任何类别时,它将过滤结果,但现在问题是我正在使用 jquery,现在事情变得很奇怪。有人可以帮我解决这个问题吗?

JS 代码:

$(document).on("click", ".category_filter1",function() {
    var test = new Array();
    $("input[name='category_filter']:checked").each(function() {
        test.push($(this).val());
    });
    showValue(test);
});

function showValue(data){
    $.ajax({
        'url': 'search/filter/'+(data.length > 0 ? data : "all"),
        'type': 'GET',
        success: function(response){ // What to do if we succeed
            if(response.data == "success")
                document.getElementById('result').innerHTML = response.categories;
        },
        error: function(response){
            // alert('Error');
        }
    });
}

所有结果的来源控制器:

public function filter($data){
        $t_data = explode(',' , $data);
        $filters = $this->load_filters();
        if(count($t_data)>0 && $t_data[0]!== "all"){
            $results = DB::table('documents')
                        ->whereIn('category', $t_data)
                        ->paginate(5);
        }else{
            $results = Document::paginate(5);
        }
        return redirect('/search')->with(["documents" => $results, "filters" => $filters]); // This part is really confusing
    }

所以流程会是这样的:

【问题讨论】:

  • `现在事情变得很奇怪`你所说的奇怪是什么意思,还有你在上图中显示的你想从控制器重定向但请求是通过 ajax 发送的?
  • 我想构建一个如图所示的类别过滤器,但是有复选框所以我必须通过ajax调用函数,如果我从ajax调用函数,那么我必须通过jquey循环结果, 那么,我将如何管理以前的结果并将这些结果替换为过滤器结果,因为数据最初来自 seachController。我知道这里很乱
  • 把图片放在公用文件夹中,这样你甚至不用调用路由来显示你的图片快速加载
  • 主公用文件夹
  • stackoverflow.com/a/38980278/9471283 这显示了如何从公用文件夹图像中调用文件

标签: javascript jquery laravel laravel-8


【解决方案1】:

从cmets中讨论的总结,

  • 为了在不刷新页面的情况下调用控制器,您需要使用 ajax,(使用 jquery 或任何其他前端框架)。以 json 格式返回您的响应,
return response()->json($your_return_array);
  • 对于图像,将其存储在公共文件夹中,例如public/images/your-image.png。 然后在你的刀片中使用 url() 方法调用它。
<img src="{{url('/images/your-image.png')}}" alt="Image"/>

【讨论】:

  • 也很好地代表了您的问题:)
猜你喜欢
  • 1970-01-01
  • 2021-09-25
  • 2017-03-12
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 2017-10-28
相关资源
最近更新 更多