この記事では、州、市、地区のドロップダウンリストのリンクを実現するためのJS + AJAXの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 効果図は以下の通りで、DBに保存されているデータが抽出されます。 フロントエンドJSPページの実装 <div class="info"> <div class="title">会社住所:</div> <div class="値"> <フィールドセットが無効> <select id="provinceSelect" class="form-control" data-val="${factoryCenterInfo.province}" onchange="provinceChange()"> <c:forEach items="${factoryPlace.provinceList}" var="州" varStatus="ステータス"> <option value="${province.key}" <span style="color:#3333ff;"><c:if test="${factoryCenterInfo.province == Province.key}">選択済み</c:if></span><span style="color:#3366ff;">></span>${province.value}</option> </c:forEach> </選択> </フィールドセット> <フィールドセットが無効> <select id="citySelect" class="form-control" data-val="${factoryCenterInfo.city}" onchange="cityChange()"> <c:forEach items="${factoryPlace.cityList}" var="city" varStatus="ステータス"> <option value="${city.key}" <span style="color:#3333ff;"><c:if test="${factoryCenterInfo.city == city.key}">選択済み</c:if></span>>${city.value}</option> </c:forEach> </選択> </フィールドセット> <フィールドセットが無効> <select id="areaSelect" class="form-control" data-val="${factoryCenterInfo.area}"> <c:forEach items="${factoryPlace.areaList}" var="area" varStatus="ステータス"> <option value="${area.key}" <span style="color:#3333ff;"><c:if test="${factoryCenterInfo.area == area.key}">選択済み</c:if></span>>${area.value}</option> </c:forEach> </選択> </フィールドセット> </div> </div> JS実装コード 効果: 複数のAjaxリクエストを実装し、リンク方式でデータを検索する 関数 州変更(){ var 州 ID = $("#provinceSelect").val(); $("#citySelect").empty(); $("#areaSelect").empty(); 州IDがnullの場合、州IDは""です。 $.ajax({ タイプ: "POST", url:"<span style="color:#3333ff;">factory/getChangeList</span>", データ型: 'json', データ: { "親ID":州ID、 "placeKbn":"C" }, キャッシュ:false、 成功: function(data){ if("成功" == data.result){ if(data.cityList != null && data.cityList.length > 0){ for(var i = 0;i < data.cityList.length;i++){ var city = data.cityList[i]; var key = (city.key == null? "":city.key); var 値 = (city.value == null? "":city.value); $("#citySelect").append("<option value = \"" + key + "\">"+ value + "</option>"); } }それ以外{ $("#citySelect").append("<オプション> </オプション>"); } $("#areaSelect").append("<オプション> </オプション>"); } if("エラー" == data.result){ $("#citySelect").append("<オプション> </オプション>"); $("#areaSelect").append("<オプション> </オプション>"); } }, エラー:関数(XMLHttpRequest、textStatus、errorThrown){ $("#errorContent").html("システム異常です。管理者に連絡してください"); } }); }それ以外{ $("#citySelect").append("<オプション> </オプション>"); $("#areaSelect").append("<オプション> </オプション>"); } } 関数 cityChange(){ var cityId = $("#citySelect").val(); $("#areaSelect").empty(); if(cityId != null && cityId != ""){ $.ajax({ タイプ: "POST", url:"<span style="color:#3333ff;">factory/getChangeList</span>", データ型: 'json', データ: { "親ID":都市ID、 "placeKbn":"Q" }, キャッシュ:false、 成功: function(data){ if("成功" == data.result){ if(data.areaList != null && data.areaList.length > 0){ for(var i = 0;i < data.areaList.length;i++){ var area = data.areaList[i]; var key = (area.key == null? "":area.key); var 値 = (area.value == null? "":area.value); $("#areaSelect").append("<option value = \"" + key + "\">"+ value + "</option>"); } }それ以外{ $("#areaSelect").append("<オプション> </オプション>"); } } if("エラー" == data.result){ $("#areaSelect").append("<オプション> </オプション>"); } }, エラー:関数(XMLHttpRequest、textStatus、errorThrown){ $("#errorContent").html("システム異常です。管理者に連絡してください"); } }); }それ以外{ $("#citySelect").append("<オプション> </オプション>"); $("#areaSelect").append("<オプション> </オプション>"); } } バックエンドコントローラの実装コード @RequestMapping("<span style="color:#3333ff;">変更リストを取得</span>") @レスポンス本文 パブリックオブジェクト getChangeList(文字列 parentId、文字列 placeKbn){ logBefore(ロガー、「factory/getChangeList」); Map<String,Object> returnMap = new HashMap<String,Object>(); FactoryConsts.CHAR_KBN_CITY.equals(placeKbn) の場合 { if(getPlacelist( parentId, placeKbn) != null && getPlacelist( parentId, placeKbn).size() > FactoryConsts.INT_0){ returnMap.put("結果", "成功"); returnMap.put("cityList", getPlacelist(parentId, placeKbn)); }それ以外{ returnMap.put("error", "都市リストが空です"); returnMap.put("cityList", ""); } }そうでない場合、FactoryConsts.CHAR_KBN_AREA.equals(placeKbn)){ if(getPlacelist( parentId, placeKbn) != null && getPlacelist( parentId, placeKbn).size() > FactoryConsts.INT_0){ returnMap.put("結果", "成功"); returnMap.put("areaList", getPlacelist(parentId, placeKbn)); }それ以外{ returnMap.put("error", "エリアリストが空です"); returnMap.put("areaList", ""); } } returnMap を返します。 } /** *都道府県ドロップダウンリスト* * @戻る */ プライベートList<PlaceOption> getPlacelist(String parentId,String kbn){ //ドロップダウンリスト List<PlaceOption> placeList = new ArrayList<PlaceOption>(); placeList.add(新しい PlaceOption()); QueryPlaceInfoParam queryParam = 新しい QueryPlaceInfoParam(); クエリパラメータを設定します。 if(!StringUtils.isEmpty(親ID)){ クエリパラメータに PlaceId を設定します (Integer.valueOf(parentId))。 } FactoryPlaceNameResult placeResult = placeInfoService.queryPlaceInfo(queryParam); placeResult != null && "0".equals(placeResult.getResult()) の場合 && placeResult.getPlaceInfo() != null && placeResult.getPlaceInfo().size() > FactoryConsts.INT_0){ リスト<PlaceInfoFa> placeInfo = 新しい ArrayList<PlaceInfoFa>(); placeInfo = placeResult.getPlaceInfo(); for(FactoryPlaceInfo 情報: placeInfo){ PlaceOption オプション = 新しい PlaceOption(); オプション.setKey(String.valueOf(info.getPlaceId())); オプション.setValue(info.getPlaceName()); placeList.add(オプション); } } placeList を返します。 } 同時にメニューをクリックすると、コントローラは初期画面を実装します /** * 基本情報初期化方法 * * @param リクエスト * @戻る */ @RequestMapping("toFactoryBaseInfo") パブリックModelAndView toFactoryBaseInfo(HttpServletRequestリクエスト){ logBefore(ロガー、「factory/toFactoryBaseInfo」)。 ModelAndView mv = 新しい ModelAndView(); //エンタープライズ型 Map<String,String> factoryTypeMap = new TreeMap<String,String>(); ファクトリタイプマップを putAll(FactoryConsts.FACTORY_TYPE_MAP); ファクトリータイプマップにオブジェクトを追加します。 FactoryFactoryInfo factoryInfo = (FactoryFactoryInfo) request.getSession().getAttribute(Const.SESSION_FACTORY); //エンタープライズ情報を取得します FactoryFactoryInfoParam infoParam = new FactoryFactoryInfoParam(); FactoryFactoryInfoResult は、新しい FactoryFactoryInfoResult() を作成します。 infoParam.setFactoryId(String.valueOf(factoryInfo.getFactoryId())); infoParam.setDifferent(FactoryConsts.STRING_WEB_ONE); //ウェブ infoResult = factoryService.factoryInfo(infoParam); ファクトリープレイスファクトリープレイス = 新しいファクトリープレイス(); <span style="color:#3333ff;">// 州のドロップダウン リスト factoryPlace.setProvinceList(getPlacelist("0",FactoryConsts.CHAR_KBN_PROVINCE)); // 都市ドロップダウンリスト factoryPlace.setCityList(getPlacelist(infoResult.getFactoryInfoEx().getProvince(),FactoryConsts.CHAR_KBN_CITY)); // エリア ドロップダウン リスト factoryPlace.setAreaList(getPlacelist(infoResult.getFactoryInfoEx().getCity(),FactoryConsts.CHAR_KBN_AREA));</span> <span style="color:#cc66cc;">mv.addObject("factoryPlace", factoryPlace);//アドレスのリスト</span> <span style="color:#6633ff;">mv.addObject("factoryCenterInfo", infoResult.getFactoryInfoEx());//エンタープライズ テーブルの基本情報</span> mv.setViewName("factory/factoryInformationCenter/saveFactoryBaseInfo"); mv を返します。 } 多段階の連携効果を実現できます。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: Win10 への MySQL 5.7 のインストール MSI 版のチュートリアル(画像とテキスト付き)
Element UIは、複数のテーブルを同時に水平および垂直にスクロールすることを実装します。 コー...
リストは、テーブルをコンテナーとして使用するテキストまたはグラフの形式として定義されます。商品の種類...
<br />原文: プログレッシブエンハンスメントを理解するアーロン・ガスタフソン翻訳:...
この記事では、ネイティブ JS で実装された均一なモーションを紹介します。その効果は次のとおりです。...
MySQL はよく使われるオープンソースのデータベース ソフトウェアですが、初めてのユーザーにはあま...
MySQL DDL ステートメントDDL、DMLとは何ですか。 DDL はデータ定義言語であり、CR...
一般的な基本グラフィックと私が遭遇するいくつかの小さなアイコンについて簡単に説明します。以下は CS...
MySQL マルチテーブルクエリワークシートを追加する -- ユーザーテーブル (ユーザー) テーブ...
ReactとはReact は、効率的で高速なユーザー インターフェイスを構築するためのシンプルな J...
Ubuntu 18.04 を使用する Python 開発者向けの参考資料です。 1. Ubuntu ...
序文SQL の言語分類には主に以下の種類があります。 DDLデータ定義言語作成、削除、変更データ定義...
この記事では、Dockerでイメージ情報を表示する方法を学ぶ必要があります。 1. imagesコマ...
目次1. クロスドメインはどのように形成されるのでしょうか? 2. クロスドメインの根本的な原因3....
CSS変数の知識を使って、追加したコードとコメントを直接投稿します <!DOCTYPE htm...
注意: 3 番目の方法は XSell でのみ使用され、finalsell では使用できません。方法1...