jQuery ajax读取本地json文件 三级联动下拉框

简介: jQuery ajax读取本地json文件 三级联动下拉框

步骤 1:创建本地JSON文件
{
  "departments": [{
      "name": "会计学院",
      "code": "052"
    },
    {
      "name": "金融学院",
      "code": "053"
    },
    {
      "name": "财税学院",
      "code": "063"
    }
  ],
  "classes": [{
      "departmentCode": "052",
      "className": "会计一班",
      "classCode": "1001"
    },
    {
      "departmentCode": "052",
      "className": "会计一班",
      "classCode": "1002"
    },
    {
      "departmentCode": "052",
      "className": "会计一班",
      "classCode": "1003"
    },
    {
      "departmentCode": "053",
      "className": "金融一班",
      "classCode": "2001"
    },
    {
      "departmentCode": "053",
      "className": "金融二班",
      "classCode": "2002"
    },
    {
      "departmentCode": "063",
      "className": "财税一班",
      "classCode": "3001"
    },
    {
      "departmentCode": "063",
      "className": "财税二班",
      "classCode": "3002"
    }],
  "nations": [{
      "id": "01",
      "text": "汉族",
      "value": "Han"
    },
    {
      "id": "02",
      "text": "壮族",
      "value": "Zhuang"
    },
    {
      "id": "03",
      "text": "回族",
      "value": "Hui"
    },
    {
      "id": "04",
      "text": "藏族",
      "value": "Tibetan"
    },
    {
      "id": "05",
      "text": "维吾尔族",
      "value": "Uighur "
    },
    {
      "id": "06",
      "text": "苗族",
      "value": "Miao"
    },
    {
      "id": "07",
      "text": "彝族",
      "value": "Yi"
    },
    {
      "id": "08",
      "text": "蒙古族",
      "value": "Mongol"
    },
    {
      "id": "09",
      "text": "布依族",
      "value": "Buyi"
    },
    {
      "id": "10",
      "text": "朝鲜族",
      "value": "Korean"
    },
    {
      "id": "11",
      "text": "满族",
      "value": "Manchu"
    },
    {
      "id": "12",
      "text": "侗族",
      "value": "Dong"
    },
    {
      "id": "13",
      "text": "瑶族",
      "value": "Yao"
    },
    {
      "id": "14",
      "text": "白族",
      "value": "Bai"
    },
    {
      "id": "15",
      "text": "土家族",
      "value": "Tujia"
    },
    {
      "id": "16",
      "text": "哈尼族",
      "value": "Hani"
    },
    {
      "id": "17",
      "text": "哈萨克族",
      "value": "Kazakh"
    },
    {
      "id": "18",
      "text": "傣族",
      "value": "Dai"
    },
    {
      "id": "19",
      "text": "黎族",
      "value": "Li"
    },
    {
      "id": "20",
      "text": "傈僳族",
      "value": "Lisu"
    },
    {
      "id": "21",
      "text": "佤族",
      "value": "Wa"
    },
    {
      "id": "22",
      "text": "畲族",
      "value": "She"
    },
    {
      "id": "23",
      "text": "高山族",
      "value": "Gaoshan"
    },
    {
      "id": "24",
      "text": "拉祜族",
      "value": "Lahu"
    },
    {
      "id": "25",
      "text": "水族",
      "value": "Shui"
    },
    {
      "id": "26",
      "text": "东乡族",
      "value": "Dongxiang"
    },
    {
      "id": "27",
      "text": "纳西族",
      "value": "Naxi"
    },
    {
      "id": "28",
      "text": "景颇族",
      "value": "Jingpo"
    },
    {
      "id": "29",
      "text": "柯尔克孜族",
      "value": "Kirghiz"
    },
    {
      "id": "30",
      "text": "土族",
      "value": "Tu"
    },
    {
      "id": "31",
      "text": "达斡尔族",
      "value": "Daur"
    },
    {
      "id": "32",
      "text": "仫佬族",
      "value": "Mulam"
    },
    {
      "id": "33",
      "text": "羌族",
      "value": "Qiang"
    },
    {
      "id": "34",
      "text": "布朗族",
      "value": "Blang"
    },
    {
      "id": "35",
      "text": "撒拉族",
      "value": "Salar"
    },
    {
      "id": "36",
      "text": "毛南族",
      "value": "Maonan"
    },
    {
      "id": "37",
      "text": "仡佬族",
      "value": "Gelao"
    },
    {
      "id": "38",
      "text": "锡伯族",
      "value": "Xibe"
    },
    {
      "id": "39",
      "text": "阿昌族",
      "value": "Achang"
    },
    {
      "id": "40",
      "text": "普米族",
      "value": "Pumi"
    },
    {
      "id": "41",
      "text": "塔吉克族",
      "value": "Tajik"
    },
    {
      "id": "42",
      "text": "怒族",
      "value": "Nu"
    },
    {
      "id": "43",
      "text": "乌孜别克族",
      "value": "Uzbek"
    },
    {
      "id": "44",
      "text": "俄罗斯族",
      "value": "Russian"
    },
    {
      "id": "45",
      "text": "鄂温克族",
      "value": "Evenki"
    },
    {
      "id": "46",
      "text": "崩龙族(得昂族)",
      "value": "Bumloon"
    },
    {
      "id": "47",
      "text": "保安族",
      "value": "Bonan"
    },
    {
      "id": "48",
      "text": "裕固族",
      "value": "Yugur"
    },
    {
      "id": "49",
      "text": "京族",
      "value": "Gin"
    },
    {
      "id": "50",
      "text": "塔塔尔族",
      "value": "Tatar"
    },
    {
      "id": "51",
      "text": "独龙族",
      "value": "Drung"
    },
    {
      "id": "52",
      "text": "鄂伦春族",
      "value": "Oroqin"
    },
    {
      "id": "53",
      "text": "赫哲族",
      "value": "Hezhen"
    },
    {
      "id": "54",
      "text": "门巴族",
      "value": "Menba"
    },
    {
      "id": "55",
      "text": "珞巴族",
      "value": "Lhobo"
    },
    {
      "id": "56",
      "text": "基诺族",
      "value": "Jino"
    }
  ]
}

在项目中创建一个本地JSON文件,该文件包含三级联动下拉框所需的数据。例如,包含省、市、区的层级结构。

步骤 2:创建index.html 编写HTML结构
  <div style="width:600px;height:400px;text-align:center;margin:0 auto;border: 1px solid green;">
        <h1>远端获取JSON数据并解析示例</h1>
        <ul>
            <li>
                所在学院:
                <select name="depart" id="depart">
                    <option value="">请选择...</option>
                </select>
            </li>
            <li>
                班  级:
                <select name="class" id="class">
                    <option value="">请选择...</option>
                </select>
            </li>
            <li>
                民  族:
                <select name="nation" id="nation">
                    <option value="">请选择...</option>
                </select>
            </li>
        </ul>
    </div>

在HTML文件中创建三个下拉框,分别用于显示省、市、区的信息:


步骤 3:启动本地HTTP服务器

为了通过Ajax请求读取本地JSON文件,我们需要在本地启动一个HTTP服务器。在命令行中,进入项目目录并运行以下命令:python -m http.server 8080

为了通过Ajax请求读取本地JSON文件,我们需要在本地启动一个HTTP服务器。在命令行中,进入项目目录并运行以下命令:python -m http.server 8080

python -m http.server 8080 启动一个简单的HTTP服务器 监听8080端口 数据服务运行在8080端口

使您能够通过 “http://localhost:8080” 访问您的项目。

步骤 4:编写jQuery Ajax代码

使用jQuery的Ajax方法读取本地JSON文件,并在成功加载数据后,将数据填充到相应的下拉框中

$(document).ready(function () {
    $.ajax({
        url: "http://localhost:8080/data.json", // 注意使用完整的URL
        dataType: "json",
        success: function (data) {
            // 处理数据并填充省级下拉框
            // ...
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.error("Ajax Error:", textStatus, errorThrown);
            // 处理错误情况,提供用户友好的提示
        }
    });
});

步骤 5:实现城市和区级联动
// 在省级下拉框的change事件中
$("#province").change(function () {
    var selectedProvince = $(this).val();
    // 根据选中的省份获取相应的城市数据并填充城市下拉框
    // ...
});

// 在城市级下拉框的change事件中
$("#city").change(function () {
    var selectedCity = $(this).val();
    // 根据选中的城市获取相应的区数据并填充区下拉框
    // ...
});

注意事项

在启动本地HTTP服务器时,确保已经安装了Python,并在项目目录中运行命令。如果遇到启动HTTP服务器失败的情况,检查端口是否被占用。

示例代码

以下是完整的HTML和JavaScript代码,用于实现本地JSON文件的三级联动下拉框:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>JSON数据调用1</title>
    <style>
        li {
            list-style-type: none;
            text-align: left;
        }
    </style>
    <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
    <script>
        $(document).ready(function () {
            var classes = ""; // 由于一会还需要使用,所以设成全局变量。
            var option = '';

            // 使用 JSONP 跨域请求JSON文件,获取相关数据
          $.ajax({
             url: "http://localhost:8000/data1.json",
             dataType: "json",
             crossDomain: true,
             success: function (data) {
                    console.log(data);

                    // data为JSON文件返回的数据,读取数据
                    var depts = data.departments; // 获取部门数据
                    var nations = data.nations; // 民族数据
                    classes = data.classes; // 得到班级数据

                    // 打印部门数据
                    console.log("部门数据:", data.departments);

                    // 打印班级数据
                    console.log("班级数据:", data.classes);

                    // 打印民族数据
                    console.log("民族数据:", data.nations);

                    // 开始给部门下拉框填充值。
                    for (var i = 0; i < depts.length; i++) {
                        option = '<option value="' + depts[i].code + '">' + depts[i].name + '</option>';
                        $('#depart').append(option);
                    }

                    // 开始给民族下拉框填充值。
                    for (var i = 0; i < nations.length; i++) {
                        option = '<option value="' + nations[i].id + '">' + nations[i].text + '</option>';
                        $('#nation').append(option);
                    }
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    console.error("JSONP Error:", textStatus, errorThrown);
                }
            });

            // 处理下拉框的联动,选择部门时加载相应的班级
            // 注意,如果不是同步模式,则这里会拿不到CLASS数据,注意体会。
            // alert(classes[0].departmentCode);

            // 选择学院后,加载相应的班级列表,填充下拉框
            $("#depart").change(function () {
                var selectedDepartmentCode = $(this).val(); // 得到选中的学院代码
                $("#class").empty(); // 清空班级下拉框

                // 根据选中的学院代码过滤班级数据
                var filteredClasses = classes.filter(function (cls) {
                    return cls.departmentCode === selectedDepartmentCode;
                });

                // 填充班级下拉框
                for (var i = 0; i < filteredClasses.length; i++) {
                    option = '<option value="' + filteredClasses[i].classCode + '">' + filteredClasses[i].className + '</option>';
                    $('#class').append(option);
                }
            });
        });
    </script>
</head>

<body>
    <div style="width:600px;height:400px;text-align:center;margin:0 auto;border: 1px solid green;">
        <h1>远端获取JSON数据并解析示例</h1>
        <ul>
            <li>
                所在学院:
                <select name="depart" id="depart">
                    <option value="">请选择...</option>
                </select>
            </li>
            <li>
                班  级:
                <select name="class" id="class">
                    <option value="">请选择...</option>
                </select>
            </li>
            <li>
                民  族:
                <select name="nation" id="nation">
                    <option value="">请选择...</option>
                </select>
            </li>
        </ul>
    </div>
</body>

</html>


步骤六: 在浏览器打开index.html



相关文章
|
1月前
|
JSON 算法 vr&ar
目标检测笔记(五):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等
本文介绍了如何使用COCO评估器通过Detectron2库对目标检测模型进行性能评估,生成coco_instances_results.json文件,并利用pycocotools解析该文件以计算AP、AR、MR和DR等关键指标。
87 1
目标检测笔记(五):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等
|
1月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
41 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
1月前
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
70 2
|
1月前
|
JSON 数据格式 计算机视觉
Opencv实用笔记(一): 获取并绘制JSON标注文件目标区域(可单独保存目标小图)
本文介绍了如何使用OpenCV和Python根据JSON标注文件获取并绘制目标区域,同时可将裁剪的图像单独保存。通过示例代码,展示了如何读取图片路径、解析JSON标注、绘制标注框并保存裁剪图像的过程。此外,还提供了相关的博客链接,供读者进一步学习。
27 0
|
2月前
|
JSON 前端开发 中间件
React读取properties配置文件转化为json对象并使用在url地址中
本文介绍了如何在React项目中读取properties配置文件,将其内容转化为JSON对象,并在请求URL地址时使用这些配置。文章详细说明了异步读取文件、处理字符串转换为JSON对象的过程,并提供了一个封装函数,用于在发起请求前动态生成配置化的URL地址。
76 1
|
2月前
|
JSON 前端开发 JavaScript
java中post请求调用下载文件接口浏览器未弹窗而是返回一堆json,为啥
客户端调接口需要返回另存为弹窗,下载文件,但是遇到的问题是接口调用成功且不报错,浏览器F12查看居然返回一堆json,而没有另存为弹窗; > 正确的效果应该是:接口调用成功且浏览器F12不返回任何json,而是弹窗另存为窗口,直接保存文件即可。
141 2
|
2月前
|
JSON 数据格式 Python
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
|
25天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
11天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
15天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。