中国省市县信息JS文件(省--市--县)我在把那个jsp的东西填好后,想让Servlet通过Request(name)获取地址字符串,但是只能获取地址编号该怎么办。



中国省市县信息JS文件(省--市--县)我在把那个jsp的东西填好后,想让Servlet通过Request(name)获取地址字符串,但是只能获取地址编号该怎么办。



关注引自免费微信小程序:皆我百晓生
在您的代码示例中,用户在页面上选择省份、城市和县区,并输入具体地址后,点击提交按钮会发送一个POST请求到addAddressServlet。然而,在Servlet中,你获取的地址信息都是编号(例如"000"),这可能是因为你在JavaScript中没有正确处理数据,导致传递给服务器的是编号而非名称。
为了获取并显示正确的省份、城市和县区名称,你需要在JavaScript中存储这些名称与编号的映射关系。然后,在用户选择某个选项时,将对应的名称而不是编号传递给服务器。
首先,创建一个JSON对象来存储省级别、市级别和县级别的名称和编号映射关系。这里是一个简单的例子:
var regions = {
provinces: [
{ code: '01', name: '省份1' },
// 添加其他省份...
],
cities: [
{ code: '0101', name: '城市1', provinceCode: '01' },
// 添加其他城市...
],
countries: [
{ code: '010101', name: '县区1', cityName: '城市1', provinceName: '省份1' },
// 添加其他县区...
]
};
接下来,更新city.js中的showCity和showCountry函数,以便在用户选择省份或城市时,动态地填充对应的城市和县区列表,并且在用户提交表单时,从映射关系中获取名称而非编号。
function showCity(selectElement) {
var selectedProvince = selectElement.options[selectElement.selectedIndex].value;
var cities = regions.cities.filter(city => city.provinceCode === selectedProvince);
var citySelect = document.getElementById('city');
citySelect.innerHTML = '<option>=请选择城市=</option>';
cities.forEach(city => {
var option = document.createElement('option');
option.value = city.code;
option.text = city.name;
citySelect.appendChild(option);
});
}
function showCountry(selectElement) {
var selectedCity = selectElement.options[selectElement.selectedIndex].value;
var countries = regions.countries.filter(country => country.cityName === selectedCity);
var countrySelect = document.getElementById('country');
countrySelect.innerHTML = '<option>=请选择县区=</option>';
countries.forEach(country => {
var option = document.createElement('option');
option.value = country.code;
option.text = country.name;
countrySelect.appendChild(option);
});
}
function prepareFormData() {
var formData = {
province: regions.provinces.find(province => province.code === document.getElementById('prov').value).name,
city: regions.cities.find(city => city.code === document.getElementById('city').value).name,
country: regions.countries.find(country => country.code === document.getElementById('country').value).name,
detailAddress: document.getElementById('detail-address').value
};
return formData;
}
document.getElementById('button-show').addEventListener('click', function(e) {
e.preventDefault();
var formData = prepareFormData();
var xhr = new XMLHttpRequest();
xhr.open('POST', "${pageContext.request.contextPath}/addAddressServlet", true);
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
xhr.send(JSON.stringify(formData));
});
在Servlet端,不需要做任何更改,因为现在传递的是名称而不是编号,所以可以直接输出。
现在,当用户提交表单时,Servlet将会接收到包含正确省份、城市和县区名称的JSON数据,可以正常构建完整的地址信息了。注意,这个例子假设了地区数据是静态的,实际应用中,这些数据通常会从数据库或其他服务获取。