Сортировать по полю выбора

-1

Я запускаю запрос в таблице batsmen и хочу сортировать результаты AZ и ZA, а также High to Low на верхнем байте, используя поле выбора, не перезагружая страницу. У меня возникла проблема с разработкой того, как заставить AJAX js работать с php и выбрать в нем любые идеи о том, как это сделать, я не могу найти полезные учебники. У меня есть этот код:

Контроллер (PHP):

    $batsmenQuery = Batsmen::where('approved', '=', 1);

   switch ($request->SortbyList){
        case 0:
            $batsmenQuery = $batsmenQuery->orderBy('name', 'DESC');
            break;
        case 1:
            $batsmenQuery = $batsmenQuery->orderBy('name', 'ASC');
            break;
        case 2:
            $batsmenQuery = $batsmenQuery->orderBy('hs', 'ASC');
            break;
        case 3:
            $batsmenQuery = $batsmenQuery->orderBy('hs', 'DESC');
            break;
            default:
                $batsmenQuery = $batsmenQuery->orderBy('name', 'DESC');


    }

    $batsmen= $batsmenQuery->paginate(40);

HTML:

        <div class="row">
            <div class="sort">
                <select name="SortbyList" id="SortBy">
                    <option value="0">A to Z</option>
                    <option value="1">Z to A</option>
                    <option value="2">Highest Score</option>
                    <option value="3">Lowest Score</option>

                </select>
            </div>
        </div>

JavaScript:

 $('#SortBy').on('change', function(e){

 });

Любые идеи о том, как использовать javascript для этой работы для переключения между операторами, связанными с тем, что было нажато в поле выбора?

  • 0
    Запросы Ajax относительно дороги, поэтому вы хотите перезагрузить отсортированные данные вместо сортировки уже загруженных данных? Вы можете просто обновить DOM своей страницы, чтобы отразить запрошенную сортировку.
  • 0
    Я не хочу перезагружать отсортированную дату. Я хочу отсортировать загруженные данные через поле выбора без перезагрузки страницы.
Показать ещё 2 комментария
Теги:
laravel-5

2 ответа

0

Это пример того, как вы можете делать то, что хотите, вам нужно изменить некоторые вещи в этом коде, используя свои собственные методы.

 $('#SortBy').on('change', function(e){
     $.ajax({
               url: "new_values.php", // This is the url you make the request
               data: {SortbyList : this.value}, // Here you can send to the server the info you want in this case is only the value for the selected item 
               success: function(result){

                 if(result){
                     $("#SortBy").empty();  //This erase all the preview values 
                     var new_options = ''
                     //This loop create the new values
                     $.each(result, function(k,v){
                          new_options += '<option value="'+ v.value +'">'+  v.name +'</option>'
                     });
                     //Now we have all the values we can put on the select
                     $("#SortBy").append(new_options);
                 }

        });
 });
  • 0
    Не работает мой друг, кажется, пытается, но ничего не происходит
  • 0
    Как ты это делаешь? Вы записали свой результат? вы используете Laravel?
Показать ещё 3 комментария
0

Кажется, вы смотрите на запрос jquery ajax, посмотрите на этот пример

// Have this in your .blade.php file 
<meta name="csrf-token" content="{{ csrf_token() }}">
<script> 
  var url_variable = "{{route('your_route_name')}}";
</script>


.
.
.
$('#SortBy').on('change', function(e){
   $.ajax({
       url: url_variable,
       type: 'POST',
       dataType: 'JSON',
       data: {
           _token: $('meta[name="csrf-token"]').attr('content'),
           SortbyList : $("#SortbyList").val()
       }
   })
   .success(function (response) {
       console.log(response);
       // Now build the table as you want with javascript and replace it 

   })
   .error(function (xhr, status, response) {
       console.log(xhr.responseText);
   });
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню