在nodejs mysql中动态下拉

时间:2018-12-26 08:25:00

标签: javascript mysql node.js ajax html5

当用户单击并选择一个客户端时,我想根据客户端更改区域,然后根据与数据库Timer上与该客户端相关的区域更改区域下拉列表

这是我的客户表格: Here is my client table

这是我的Region表,其中client_id是外键: Here is my Region table in which client_id is the foreign key

这是我的代码

enter code here

这是要添加区域的页面: Here is the page to add area

2 个答案:

答案 0 :(得分:1)

您需要在onChange事件上为field_id = client_id 添加ajax请求,以根据选定的 client_id 获取区域。为了响应,您可以根据需要设计服务器,可以在服务器端生成HTML,也可以从数据库中获取原始结果作为响应,然后在客户端从中生成HTML。当您获得适合选择选项的HTML格式后,将该HTML附加到 region_id 选择。

答案 1 :(得分:0)

基本上,解决方案归结为以下内容:

//These are your target elements
const client = document.querySelector('#client');
const region = document.querySelector('#region');
const table = document.querySelector('#table');
//POST username upon change event and modify table 'div' and region'select' innerHTML's accordingly
client.addEventListener('change', function () {
    let xhr = new XMLHttpRequest();
    let user = this.value;
    xhr.open('POST', '/getRegionsByUser', true);
    xhr.send(user);
    xhr.onload = function(){
        if (xhr.readyState == 4 && xhr.status == 200) {
            let regions = JSON.parse(this.responseText);
            /* expected JSON-formatted string {list:[region1, region2, ...] */
            regions.list.forEach(region => {
                region.innerHTML += '<option value="'+region+'">'+region+'</option>';
                table.innerHTML += '...';
            });
        }
    };
});

服务器端脚本在很大程度上取决于您的环境,从概念上讲,它应该按用户名执行SQL选择区域并以JSON格式的列表进行响应