Jquery Ajax 提交 级联实现

页面代码:

<div>
 
      省份:<select id="province">
           <option value="">请选择省份</option>
        </select>
      城市:<select id="city">
        <option value="">请选择城市</option>
        </select>
</div>

级联菜单js代码
$(document).ready(function(){
var province=$("#province");
var city=$("#city");
var provinceurl="/Struts2/base/selectProvince.action";
$.post(provinceurl,{code:"province"},function(data){
    var dataObj=eval("("+data+")");
    $.each(dataObj,function(index,item){
    var tempOption = document.createElement("option");
    tempOption.value = item.provinceId;
    tempOption.innerHTML  = item.provinceName;
    province.append(tempOption);
    });
},"json");

province.change(function(){
  city.empty();
  var params={provinceCode:$('#province option:selected').val()};
  $.post("/Struts2/base/selectCity.action",params,function(data){
  alert(data);
  var dataObj=eval("("+data+")"); //转换为json对象
    $.each(dataObj,function(index,item){
    var tempOption = document.createElement("option");
    tempOption.value = item.cityId;
    tempOption.innerHTML  = item.cityName;
    city.append(tempOption);
    });
  },"json");
});
});

 

对应的Action代码:

package com.hyts.business.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import net.sf.json.JSONArray;

import com.hyts.dao.ProvinceDAO;
import com.hyts.model.City;
import com.hyts.model.Province;
import com.opensymphony.xwork2.ActionSupport;

public class ChainSelectAction extends ActionSupport {

 private static final long serialVersionUID = 1383189653446960523L;
 private HttpServletRequest request;
 private String result;//前台接收数据
 private String provinceCode;
 public String selectProvince()  {
  ProvinceDAO provinceDAO=new ProvinceDAO();
  List<Province> list=provinceDAO.getAllProvince();
  JSONArray jsonArray2 = JSONArray.fromObject( list );             
  this.result=jsonArray2.toString();
  return SUCCESS;
 }

 public String selectCity() throws Exception{
  ProvinceDAO provinceDAO=new ProvinceDAO();
  System.out.println(this.provinceCode);
  int provinceId=Integer.parseInt(this.provinceCode);
  List<City> list=provinceDAO.getCityByProvince(provinceId);
  for(int i=0;i<list.size();i++)
  {
   City city=list.get(i);
   System.out.println(city.getCityName());
  }
  JSONArray jsonArray = JSONArray.fromObject( list );
  this.result=jsonArray.toString();
  return SUCCESS;
 }
 public String getResult() {
  return result;
 }

 public void setResult(String result) {
  this.result = result;
 }
 
 public String getProvinceCode() {
  return provinceCode;
 }

 public void setProvinceCode(String provinceCode) {
  this.provinceCode = provinceCode;
 }

 public void setServletRequest(HttpServletRequest request) {
  this.request=request;
 }
}

 

对应的配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
  <include file="struts-default.xml"/>
  <package name="/base" extends="json-default" namespace="/base">
  <action name="selectProvince" class="com.hyts.business.action.ChainSelectAction" method="selectProvince">
           <result type="json">
              <param name="root">result</param>
           </result>
  </action>
  
  <action name="selectCity" class="com.hyts.business.action.ChainSelectAction" method="selectCity">
           <result type="json">
              <param name="root">result</param>
           </result>
  </action>
 </package>
</struts>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
三级级联下拉菜单可以通过Jquery+Ajax实现,以下是一个简单的示例代码: HTML代码: ```html <select id="province"> <option value="">请选择省份</option> <option value="北京">北京</option> <option value="上海">上海</option> <option value="广东">广东</option> </select> <select id="city"> <option value="">请选择城市</option> </select> <select id="district"> <option value="">请选择区县</option> </select> ``` Jquery+Ajax代码: ```javascript $(document).ready(function() { // 加载省份列表 $.ajax({ type: "GET", url: "province.php", success: function(data) { $("#province").append(data); } }); // 省份选项改变时,加载城市列表 $("#province").change(function() { var province = $(this).val(); $("#city").html("<option value=''>请选择城市</option>"); $("#district").html("<option value=''>请选择区县</option>"); if (province != "") { $.ajax({ type: "GET", url: "city.php", data: {"province": province}, success: function(data) { $("#city").append(data); } }); } }); // 城市选项改变时,加载区县列表 $("#city").change(function() { var province = $("#province").val(); var city = $(this).val(); $("#district").html("<option value=''>请选择区县</option>"); if (city != "") { $.ajax({ type: "GET", url: "district.php", data: {"province": province, "city": city}, success: function(data) { $("#district").append(data); } }); } }); }); ``` 在省份、城市、区县列表对应的php文件中,需要根据传入的参数返回对应的选项列表。例如,city.php文件可能如下所示: ```php $province = $_GET["province"]; echo "<option value=''>请选择城市</option>"; if ($province == "北京") { echo "<option value='北京市'>北京市</option>"; } else if ($province == "上海") { echo "<option value='上海市'>上海市</option>"; } else if ($province == "广东") { echo "<option value='广州市'>广州市</option>"; echo "<option value='深圳市'>深圳市</option>"; echo "<option value='珠海市'>珠海市</option>"; } ``` 类似地,district.php文件也需要根据传入的参数返回对应的选项列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值