Я запускаю запрос в таблице 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 для этой работы для переключения между операторами, связанными с тем, что было нажато в поле выбора?
Это пример того, как вы можете делать то, что хотите, вам нужно изменить некоторые вещи в этом коде, используя свои собственные методы.
$('#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);
}
});
});
Кажется, вы смотрите на запрос 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);
});
});