【问题标题】:Why the query from controller not display in table using ajax in Laravel?为什么来自控制器的查询不显示在 Laravel 中使用 ajax 的表中?
【发布时间】:2019-06-01 18:05:20
【问题描述】:

我想创建一个搜索过滤器并使用 ajax 显示输出。

这是提交数据的按钮:

   {!! Form::open(['method' => 'POST', 'action' => 'Modul\CarianAnugerahController@search']) !!}

   //Form for filter here...

   {{ Form::submit('Cari', ['class' => 'btn btn-primary', 'id' =>'search']) }}
    {!! Form::close() !!}

这是表格下的输出表:

  <div class="panel panel-default">
                  <div class="panel-heading">Senarai Calon Anugerah</div>
                     <div class="panel-body">
                            @if (session('status'))
                                <div class="alert alert-success">
                                    {{ session('status') }}
                                </div>
                            @endif


                             @if(Auth::check())
                                <div class="container table-responsive col-lg-12">
                                    <!-- <div class="container text-center"> -->      
                                        <table class="table table-striped table-bordered" id="calon_table" >
                                            <thead>
                                              <tr>
                                                <td class="text-center col-lg-3"><strong>Name</strong></td>
                                                <td class="text-center"><strong>Action</strong></td>
                                                <!-- <td class="text-center"><strong>Lihat Rekod</strong></td> -->
                                              </tr>
                                            </thead>

                                        <tbody id="calon_anugerah">

                                        </tbody>
                                        </table>
                                    <!-- </div> -->

                                </div>
                            @endif
                            @if(Auth::guest())
                                <a href="/login" class="btn btn-info"> Anda perlu log masuk.</a>
                            @endif
                     </div>
                  </div>
    </div>

获取数据的ajax代码为:

 <script type="text/javascript">
  $('#search').on('click', function(){

    $.get("{{ URL::to('search-calon') }}",function(data){

        $.each(data, function(i, value){

            var tr =$("<tr/>");
              tr.append($("<td/>",{
                  text : value.name
              }))
              $('#calon_anugerah').append(tr);
        });
    })
  })
</script>

我使用 CarianAnugerahController@search 中的代码查询了数据:

 $query = DB::table('itemregistrations')
    ->select('itemregistrations.ItemRegistrationID','itemregistrations.name', 'itemregistrations.Nobadan');

    if(request('umur')) {
        $query->whereRaw('YEAR(CURDATE()) - lahir_yy >= ?', [request('umur')]);  
    }

    if(request('negeri_lahir')) {
        $query->where('NegeriID', request('negeri_lahir'));
    }

    if(request('kategori')) {
        $query->where('CategoryID', request('kategori'));
    }

    if(request('pangkat')) {
        $query->where('OperasiID', request('pangkat'));
    }

$newitem = $query->get();

return response($newitem);

这是路线:

 Route::resource('carian_anugerah', 'Modul\CarianAnugerahController');
 Route::post('/search-calon', 'Modul\CarianAnugerahController@search');

我可以得到值,但它没有显示在表格中..它在白页中以 json 格式显示输出..

示例输出..在浏览器中。

ajax 代码中缺少什么?

【问题讨论】:

    标签: ajax laravel-5 html-table


    【解决方案1】:

    我猜你应该删除 form actionmethod。因为如果您通过ajax 提交表单,则不需要actionmethod。由于actionmethod,您的表单正在像普通的表单数据发布一样提交,这就是您在浏览器上接收输出的原因。

     {!! Form::open() !!}
     {{ csrf_field() }}
     //Form for filter here...
    
     {{ Form::submit('Cari', ['class' => 'btn btn-primary', 'id' =>'search']) }}
     {!! Form::close() !!}
    

    尝试这些更改,看看您是否获得了想要的结果。并使用post 进行ajax 调用,你的search-calon 路由是POST

    <script type="text/javascript">
    $('#search').on('click', function(){
    
    $.post("{{ URL::to('search-calon') }}",function(data){
    
        $.each(data, function(i, value){
    
            var tr =$("<tr/>");
              tr.append($("<td/>",{
                  text : value.name
              }))
              $('#calon_anugerah').append(tr);
        });
    })
    })
    </script>
    

    【讨论】:

    • 是的,你是对的,我刚刚注意到了表单方法。它调用方法控制器而不是 ajax 函数。谢谢
    • @joun 欢迎您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多