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 がビデオ弾幕効果を実現

これを実現するには、ES6 モジュール開発とオブザーバー モードを使用します。オブザーバー パターン...

vscode で Prettier Code プラグインを使用する詳細なチュートリアル

なぜprettierを使うのですか?大企業では、フロントエンド開発コードに独自のコード標準がある場合...

Alibaba CloudにMySQLをインストールする方法の詳細な説明

軽量のオープンソース データベースである MySQL は、エンタープライズ レベルのアプリケーション...

MySQL で大文字と小文字を区別しないように設定する方法

mysql は大文字と小文字を区別しないように設定されていますウィンドウズmysqlがインストールさ...

Linux に setup.py プログラムをインストールする方法

まず次のコマンドを実行します: [root@mini61 setuptools-8.2.1]# py...

HTML チュートリアル: 定義リスト

<br />原文: http://andymao.com/andy/post/104.h...

Centos7 で mysqldump を使用して MySQL データベースの毎日の自動バックアップを作成する

1. 要件:データベースのバックアップは、実稼働環境にとって特に重要です。データベースのバックアップ...

Linux で Squid プロキシ サーバーを構築するための完全な手順

序文この記事では、Linux で Squid プロキシ サーバーを設定することに関する関連コンテンツ...

MySQL トランザクション分離レベルの表示と変更の例

トランザクション分離レベルを確認するMySQL では、'%tx_isolation%'...

Vue ページをリフレッシュするために provide と injection を適用する

目次方法1: 関数を直接呼び出す方法2: provide / inject (静的更新) を使用する...

MySQL クエリ キャッシュのグラフィカルな説明

目次1. 原則の概要クエリキャッシュシステム変数1. クエリキャッシュを持つ2. クエリキャッシュ制...

Centos7 での python3 のインストールとアンインストールに関するチュートリアル

1. Python 3をインストールする1. 依存パッケージをインストールしますyum instal...

MySQLは外部SQLスクリプトファイルのコマンドを実行します

目次1. SQLコマンドを含むSQLスクリプトファイルを作成する2. SQLスクリプトファイルを実行...

VueにExcelテーブルプラグインを導入する方法

この記事では、Excelテーブルプラグインを導入するVueの具体的なコードを参考までに共有します。具...

VSCode の Remote-SSH を使用して Linux に接続し、リモート開発を行う

Remote-SSHをインストールして設定するまず VSCode を開き、拡張機能を見つけて、Rem...