質問: $('["エリア3"]:checked').map(function(){ return $(this).val() }).get().join(','); $.ajax({ url : "hoge.php", type : "get", dataType : "json", scriptCharset: 'utf-8', data: { Area : 1, Area1: Area1, Area2: Area2, Area3: Area3 }, success : function(data){ $("#大エリアボックス").remove(); $("#大エリアボックス").append(data["エリア1"]); if (data["エリア2"]) { $("都道府県ボックス").remove(); $("都道府県ボックス").append(data["エリア2"]); } }, error: function(XMLHttpRequest, textStatus, errorThrown){ //エラー処理 } }); }); //都道府県、市区町村も同じようなコード ``` この後に、検索ボタンを押すと、上記のようにエリアデータを収集し、検索プログラムへデータを渡します。 よろしくお願いします。
回答: 大区分、都道府県と市町村を順に絞り込んだ上で、キーワードなどでの検索が有り、絞り込み状態を保存したまま再検索する、というような挙動でしょうか。 ex) 1回目の検索 大区分 ⇒ 北海道, 九州 都道府県 ⇒ 北海道, 沖縄 市区町村 ⇒ 稚内市, 石垣市 検索キーワード ⇒ 最南端 ex) 2回目の検索 大区分 ⇒ 北海道, 九州 // ここをセッションで保存 都道府県 ⇒ 北海道, 沖縄 // ここをセッションで保存 市区町村 ⇒ 稚内市, 石垣市 // ここをセッションで保存 検索キーワード ⇒ 最北端 セッションをどういう意図で使っているのかがいまいちわかりませんが、書かれている内容であればセッションを使う必要性は低いと思います。ajaxで画面遷移なしで検索を行っているのだから、ページ内に変数を保持するか毎回取得し、全キーワードを送ったほうが手早い気がします。 ※ 下記コードは「こういう方向性」くらいな気分で書いているのでこのまま動作するわけでは有りません。 ``` $( 'form' ).on( 'click', 'select, input', function() { var form_data = {} , $_this = $( this ) , id = $_this.attr( 'data-flag' ) ; // クリックした要素がどれか if ( id === '大区分' ) { // 大区分なら都道府県を消しておく } else if ( id === '.都道府県' ) { // 都道府県なら市区町村を消しておく } else if ( id === '市区町村' ) { } else if ( id === '検索キーワード' ) { } else { }; var $a = $( 'form' ).find( '#大区分:checked' ) , $b = $( 'form' ).find( '.都道府県:checked' ) , $c = $( 'form' ).find( '.市区町村:checked' ) , $d = $( 'form' ).find( '#検索キーワード' ) ; if ( $a.length ) { form_data[ '大区分' ] = $a.val(); }; // 選択されていないとnullが入るはず。 if ( $b.length ) { form_data[ '都道府県' ] = $b.map( function() { return $(this).val(); } ).get().join( ',' ); }; if ( $c.length ) { form_data[ '市区町村' ] = $c.map( function() { return $(this).val(); } ).get().join( ',' ); }; if ( $d.length ) { form_data[ '検索キーワード' ] = $d.val(); }; /* { // ex) '大区分' : '北海道, 九州' , '都道府県' : '北海道, 沖縄' , '市区町村' : '稚内市, 石垣市' , '検索キーワード' : '最南端' }; */ $.ajax( { url : 'hoge.php' // '大区分' だけ入っていたら都道府県のデータを返し、それ以降が入っていたらそれぞれ返すものを変えるようにhoge.phpを構成する , type : 'get' , dataType : 'json' , scriptCharset : 'utf-8' , data : form_data , success : function( data ){ if ( data[ 'type' ] === '大区分' ) { // 都道府県部分を書き換え } else if ( data[ 'type' ] === '都道府県' ) { // 市区町村部分を書き換え } else if ( data[ 'type' ] === '市区町村' ) { // 処理 } else if ( data[ 'type' ] === '検索キーワード' ) { // 処理 } else { // 処理 }; } , error: function( XMLHttpRequest, textStatus, errorThrown ) { //エラー処理 } } ); } ); ``` ``` 大区分: 北海道 九州 都道府県: 北海道 沖縄 市区町村: 稚内市 石垣市 検索キーワード: ```