私はこれをここ数週間解決しようとしています。私はちょうどそれの周りに私の頭を得ることはできません。私のウェブページLaravel AJAX - 複数の選択されたフィルタを覚えている
私は全部で4つのフィルタがあります:1、検索、年によってフィルタ、国によって打ち上げサイトやフィルタによるフィルタを。これらのフィルタは、単独で完全に動作します。彼らはすぐに自分のデータベースをフィルタリングし、必要な結果を返すことができます。
問題は、一つのフィルタを適用し、別のフィルタを適用することにした場合、それは最初のフィルタをリセットしているという事実にあります。私が作っているAJAX呼び出しは、私が最初に適用したフィルタが何であったかを覚えておく能力がありません。私の研究から、ユーザーが選んだフィルターを何らかの形で保存し、ボタンなどでそれらを適用する必要があることがわかった。私はそれがこれを実装する最も簡単な方法だと思います。
基本的には、私たちが達成したいことは、ユーザーがリセットを取得して最初の1せずに、複数のフィルタを選択することができるようにすることです。
これは私が現在、私のAJAX呼び出しのために使用していますコードです:それはそれを行うための最善の方法ではなかったとはないので、私は私の答えを更新し
$(document).ready(function() {
$('#filter-type').select2();
$('#filter-year').select2();
$('#filter-pad').select2();
$('#search').on('keyup', function() {
$value = $(this).val();
delay(function() {
if ('#search'.length > 3) {
$.ajax({
type: 'get',
url: '{{$operatorname->spadoc_cd}}',
data: {
'search': $value
},
success: function(data) {
$('#data-holder').html(data);
}
});
}
}, 300);
});
$("#filter-pad").change(function() {
$value = $(this).val();
$.ajax({
type: "get",
url: "{{$operatorname->spadoc_cd}}",
data: {
'search': $value,
type: 'site'
},
success: function(data) {
$('#data-holder').html(data);
}
});
});
$("#filter-type").change(function() {
$value = $(this).val();
$.ajax({
type: "get",
url: "{{$operatorname->spadoc_cd}}",
data: {
'search': $value,
type: 'object_type'
},
success: function(data) {
$('#data-holder').html(data);
}
});
});
$("#filter-year").change(function() {
$value = $(this).val();
$.ajax({
type: "get",
url: "{{$operatorname->spadoc_cd}}",
data: {
'search': $value,
type: 'launch_year'
},
success: function(data) {
$('#data-holder').html(data);
}
});
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
if ($request->ajax())
{
$output="";
$operatorsatellite = DB::table('satellites')
->where(function($q) use ($request) {
if(empty($request->type) && empty($request->rocket_type)) {
$q->orWhere('satname','LIKE','%'.$request->search.'%')
->orWhere('norad_cat_id','LIKE','%'.$request->search.'%')
->orWhere('country','LIKE','%'.$request->search.'%')
->orWhere('object_id','LIKE','%'.$request->search.'%');
} else {
if(!empty($request->type)) {
$q->orWhere($request->type,'LIKE','%'.$request->search.'%');
}
if(!empty($request->site)) {
$q->orWhere('site','LIKE','%'.$request->site.'%');
}
if(!empty($request->object_type)) {
$q->orWhere('object_type','LIKE','%'.$request->object_type.'%');
}
if(!empty($request->launch_year)) {
$q->orWhere('launch','LIKE','%'.$request->launch_year.'%');
}
}
})
->where('country', $spadoc_cd)->Paginate(700);
if ($operatorsatellite)
{
foreach ($operatorsatellite as $key => $operatorsatellites) {
$output .='<div class="table-row" id="launchsatdisplay">'.
'<div class="satname">'.'<a href=/satellite/'."$operatorsatellites->norad_cat_id".'>'.$operatorsatellites->satname.'</a>'.'</div>'.
'<div>'.'<div class="satnumbers">'.'<span>'.$operatorsatellites->norad_cat_id.'</span>'.'<span>'.$operatorsatellites->object_id.'</span>'.'</div>'.'</div>'.
'<div>'.$operatorsatellites->object_type.'</div>'.
'</div>';
}
}
return $output;
}
else {
$operatorsatellite = DB::table('satellites')->Paginate(50);
return view('pages/operator-filter', compact('operators', 'operatorsatellite', 'searchsite', 'searchyear', 'searchtype'));
}
になりますが、セッション中に、あなたのフィルタを保存しない理由として、データを送信する、ことを行うにはポイントがありませんか? –
@skileton - 私は実際にそれを考えなかった。それは良いアイデアのようだ!私は最初のステップは、それを実装する方法を見つけることだと思います。これを行う方法について何か提案していただけますか? –
@skileton URLの各クエリの間に疑問符はありません。あなたはそれをどうやって修正しようとしますか?携帯から –