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 版のチュートリアル(画像とテキスト付き)

推薦する

JS はシンプルなブロック崩しピンボールゲームを実装します

この記事では、ブロック崩しピンボールゲームを実装するためのJSの具体的なコードを参考までに紹介します...

コンパイル、インストールから設定ファイルの説明まで、中国語でnginxの詳細な説明

この記事では、コンパイルとインストールから設定ファイルの説明まで、Nginx について詳しく紹介しま...

mysql 変数の使用例の分析 [システム変数、ユーザー変数]

この記事では、例を使用して MySQL 変数の使用方法を説明します。ご参考までに、詳細は以下の通りで...

Linux sedコマンドの使用

1. 機能紹介sed (Stream EDitor) は、コンテンツを 1 行ずつ処理するストリーム...

HTMLページのネイティブVIDEOタグはダウンロードボタン機能を隠します

Web プロジェクトを作成しているときに、紹介ビデオが別にある紹介ページに遭遇しました。この短いビデ...

Linux で lvm 論理ボリューム パーティションのサイズを調整するチュートリアル (xfs や ext4 などのさまざまなファイル システム用)

序文システムをインストールしたときに、パーティション領域を適切に割り当てませんでした。その後のメンテ...

MySQL 8.0.22 のインストールと設定のグラフィックチュートリアル

MySQL8.0.22のインストールと設定(超詳細)参考までに、具体的な内容は次のとおりです。みなさ...

MySQL インデックスの詳細な説明

目次1. インデックスの基本1.1 はじめに1.2 インデックスの仕組み1.3 インデックスの種類1...

Trash-Cli: Linux のコマンドラインごみ箱ツール

ゴミ箱は Linux ユーザー、Windows ユーザー、Mac ユーザーにとって非常に一般的なので...

あるテーブルからバッチデータをクエリし、それを別のテーブルに挿入する MySQL の完全な例

事前に言っておくNodejs はデータベースを非同期操作として読み取るため、データベースがデータを読...

SQL 集計、グループ化、並べ替え

目次1. 集計クエリ1. COUNT関数2. SUM関数3. AVG関数4. MAX関数とMIN関数...

VMWare14.0.0のUbuntu仮想マシンで共有フォルダを設定する

これは私の最初のブログ投稿です。時間の制約があるため、どのようにフォーマットすればよいかわかりません...

Mysql の主キー インデックスと非主キー インデックスの違いについて簡単に説明します。

目次インデックスとは何か主キーインデックスと通常のインデックスの違いインデックスにはどのデータ構造が...

MySQLデータベースは重複データを削除し、メソッドインスタンスを1つだけ保持します

1. 問題の紹介ユーザー テーブルに 3 つのフィールドが含まれているシナリオを想定します。 id、...

Linuxのtopコマンド出力の詳細な説明

序文皆さんは Linux で top コマンドを使ったことがあると思います。私は Linux に触れ...