私は、チェックボックスを識別し、それらの値をAJAX Getを使用してLaravel Controllerに渡すために使用する複数選択チェックボックスを持っています。Laravel whereAjaxの複数選択チェックボックス
コントローラにAjaxデータを渡すとき、jsonは1つのコレクションのみを返します。具体的には、渡された文字列の最初の値に対してのみ返されます。だから私はチェックボックスで1,2,4,8を選択します。 category_id = 1のプロジェクトを返します。私が2,9,10を選択すると、category_id = 2のプロジェクトだけが返されます。入力が正しいかどうかを確認するために、私は入力を表示に渡し、console.logにも入力が正しいことを常に伝えました。
すべてのプロジェクトを取得できますが、whereInを使用してデータを渡すと、渡された配列の最初の値のコレクションのみが取得されます。私は配列にそれを作ると通過しようとしている
: 1)通過AJAXデータをアレイに、次いで内破使用して文字列に変換して、アレイ内のそれを通過した前記直接配列を渡す 2)請求
私も失敗して試したいくつかのクエリを添付している。
どのような提案でも大いに役立つでしょう。真の配列に結果のjQueryオブジェクトをオンにする
ProjectsController
public function getPaginate(Request $request) {
$input = array(Input::get('categories'));
//$input2 = array($input);
//$value = implode(',', $input);
$sql = [1,2];
$projects = \App\Project::whereIn('category_id' , $sql)->get(); //working
//$projects = DB::table('projects')->whereIn('category_id', array($value))->get();
//$projects = DB::select("select * from categories INNER JOIN projects on categories.id = projects.category_id where category_id IN('$value')");
//$projects = \App\Project::paginate(4);
$categories = \App\Category::all();
// $projects = DB::select('select * from categories INNER JOIN projects on categories.id = projects.category_id where category_id IN('.$products.')');
// changed for AJAX
if(Request::ajax()) {
$projects = \App\Project::whereIn('category_id' ,$input)->get(); //not working
//$value = implode(',', $input);
//return Response::json(View::make('layouts.projects',array('projects'=>$input))->render());
return Response::json(array('projects' =>$projects,'input'=>$input));
}
return view('paginate', ['projects' =>$projects,'categories'=>$categories]);
}
アヤックス& jQueryのセレクタ
$(document).ready(function() {
$('input[type="checkbox"]').on('change', function(event) {
var checkboxValues = [];
$('input[type="checkbox"]:checked').each(function(index, elem) {
checkboxValues.push($(elem).val());
});
$('#myResponse').html(checkboxValues.join(','));
categories = checkboxValues.join(',');
getfilters();
});
});
var getfilters = function() {
$.ajax({
type: 'GET',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: '{{URL::route('get.paginate')}}',
data: {categories: categories},
error: function(e) {
console.log(e.responseText);
},
success: function (data) {
console.log(data);
$('#projects').html(data);
}});
};
.MAPとに.get()が魅力のように働きました!ありがとう、トン。 私はPHPのデータ型を変更する方法に集中しましたが、クエリ自体には集中しませんでした。 – avinash
偉大な、答えを投票して自由に感じる。 –