686j 2024-05-04 19:00 采纳率: 71.4%
浏览 4

Java网页设计中jsp文件信息Servlet获取信息

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

img

img

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-04 19:00
    关注

    引自免费微信小程序:皆我百晓生

    在您的代码示例中,用户在页面上选择省份、城市和县区,并输入具体地址后,点击提交按钮会发送一个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中的showCityshowCountry函数,以便在用户选择省份或城市时,动态地填充对应的城市和县区列表,并且在用户提交表单时,从映射关系中获取名称而非编号。

    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数据,可以正常构建完整的地址信息了。注意,这个例子假设了地区数据是静态的,实际应用中,这些数据通常会从数据库或其他服务获取。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月4日