JS+AJAX は、州、市、地区のドロップダウン リストのリンクを実現します。

JS+AJAX は、州、市、地区のドロップダウン リストのリンクを実現します。

この記事では、州、市、地区のドロップダウンリストのリンクを実現するための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 を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JavaScript による省・市連携効果の実現
  • JavaScriptで州と都市の連携効果を実現
  • 省と市の連携バグ解決を実現するJavaScript
  • JS をベースとしたコード共有で省市連携効果を実現
  • js 州と市の連携効果の完全なサンプルコード
  • JSON+HTMLは国、州、都市のリンク選択効果を実現します
  • JavaScript 2次元配列で実装された州市連携メニュー
  • JavaScript 州と市町村の連携実装コード
  • 州と都市間の連携効果を実現するために js を使用する簡単な例
  • 州と市の連携の最新バージョンの javascript 2009
  • js はドロップダウンリストで値を選択するメソッドを実装します (3 つのメソッド)
  • jQuery が Ajax を使用してバックグラウンドから JSON データを取得した後、ドロップダウン リストにコンテンツを入力する方法
  • jquery+json ユニバーサル 3 レベル リンク ドロップダウン リスト

<<:  VMware マルチノード環境を構成する方法

>>:  Win10 への MySQL 5.7 のインストール MSI 版のチュートリアル(画像とテキスト付き)

推薦する

同期スクロールを実現するための複数のテーブル要素のサンプルコード

Element UIは、複数のテーブルを同時に水平および垂直にスクロールすることを実装します。 コー...

情報製品の読書リストのインタラクティブなデザインに関する考えと経験の共有

リストは、テーブルをコンテナーとして使用するテキストまたはグラフの形式として定義されます。商品の種類...

未来志向の総合的なウェブデザイン:プログレッシブエンハンスメント

<br />原文: プログレッシブエンハンスメントを理解するアーロン・ガスタフソン翻訳:...

ネイティブJSが様々なスポーツの均一な動きを実現

この記事では、ネイティブ JS で実装された均一なモーションを紹介します。その効果は次のとおりです。...

MySQL 5.x の文字化け問題の解決方法

MySQL はよく使われるオープンソースのデータベース ソフトウェアですが、初めてのユーザーにはあま...

MySQL データ定義言語 DDL の基本ステートメント

MySQL DDL ステートメントDDL、DMLとは何ですか。 DDL はデータ定義言語であり、CR...

CSS スタイルで一般的なグラフィック効果を示すサンプルコード

一般的な基本グラフィックと私が遭遇するいくつかの小さなアイコンについて簡単に説明します。以下は CS...

MySQL データベースの高度なクエリとマルチテーブルクエリ

MySQL マルチテーブルクエリワークシートを追加する -- ユーザーテーブル (ユーザー) テーブ...

HTMLからReactを実装する方法を教えます

ReactとはReact は、効率的で高速なユーザー インターフェイスを構築するためのシンプルな J...

Ubuntu 18.04にPython仮想環境をインストールする

Ubuntu 18.04 を使用する Python 開発者向けの参考資料です。 1. Ubuntu ...

MySQL DDLステートメントの使用

序文SQL の言語分類には主に以下の種類があります。 DDLデータ定義言語作成、削除、変更データ定義...

Dockerでイメージ情報を表示する方法

この記事では、Dockerでイメージ情報を表示する方法を学ぶ必要があります。 1. imagesコマ...

Ajax リクエストにおけるクロスドメイン問題の原因と解決策

目次1. クロスドメインはどのように形成されるのでしょうか? 2. クロスドメインの根本的な原因3....

CSS 動的読み込みバー効果のサンプルコード

CSS変数の知識を使って、追加したコードとコメントを直接投稿します <!DOCTYPE htm...

MySQLデータベースでコマンドを自動補完する3つの方法

注意: 3 番目の方法は XSell でのみ使用され、finalsell では使用できません。方法1...