Почему запрос от контроллера не отображается в таблице с помощью ajax в Laravel? - PullRequest
0 голосов
/ 07 января 2019

Я хочу создать поисковые фильтры и отобразить вывод, используя 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 на белой странице ..

пример вывода .. в браузере.

example output in browser

Чего не хватает в коде ajax?

1 Ответ

0 голосов
/ 07 января 2019

Полагаю, вам следует удалить form action и method. Потому что, если вы отправляете форму через ajax, вам не нужны action и method. Из-за action и method ваша форма отправляется как обычная запись данных формы, и поэтому вы получаете вывод в браузере.

 {!! Form::open() !!}
 {{ csrf_field() }}
 //Form for filter here...

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

Попробуйте эти изменения и посмотрите, получаете ли вы желаемый результат. И сделайте вызов ajax с post, ваш маршрут 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>
...