异步请求动态加载页面

简介: 最近现在在做的项目需要前后端分离,并且还有一些国际化的原因,需要动态替换页面上的一些元素,我简单的和前端同学说了一下我的思路,但是前端同学貌似没太明白,于是自己写了个demo。 大致思路是这样的:先从异步请求业务系统中取到业务数据,再将业务数据中相关的Code替换成对应的中英文。实现代码如下: 前台代码: <%@page pageEncoding="UTF-8" conten

最近现在在做的项目需要前后端分离,并且还有一些国际化的原因,需要动态替换页面上的一些元素,我简单的和前端同学说了一下我的思路,但是前端同学貌似没太明白,于是自己写了个demo。

大致思路是这样的:先从异步请求业务系统中取到业务数据,再将业务数据中相关的Code替换成对应的中英文。实现代码如下:

前台代码:

<%@page pageEncoding="UTF-8" contentType="text/html;UTF-8" %>
<html>
<head>
    <title>${titleName}</title>
    <script src="/resources/js/jquery-2.1.4.min.js"></script>
</head>
<body>
<table name="dynamicTable" border="1">
    <tr>
        <td>姓名</td>
        <td>年龄</td>
        <td>地址</td>
        <td>工种</td>
        <td>类别</td>
    </tr>
</table>
<script type="text/javascript">
    $(function(){
        var categorys = {"coder":"程序员","manager":"项目经理"};//这里的数据是要从后台取得,这里先写死了
        var jobs = {"tester":"测试","developer":"开发","qualitier":"质量","product":"产品","design":"设计"};//这里的数据是从后台取得,这里先写死了
        $.ajax({
            type:"GET",
            url:"/get_dynamic_load_page_data.do",//请求业务数据
            dataType:"json",
            success:function (data) {
                if(data.length > 0){
                    for(var i=0;i<data.length;i++){
                        //拼装业务数据
                        var str = "<tr><td>"+data[i]["userName"]+"</td><td>"+data[i]["age"]+"</td><td>"+data[i]["address"]+"</td><td><input type='hidden' name='jobs' value='"+data[i]["programLanguage"]+"'/></td><td><input type='hidden' name='category' value='"+data[i]["category"]+"'></td></tr>";
                        $('table[name="dynamicTable"]').append(str);//将业务数据渲染到页面上
                    }
                }
                //循环上面业务数据,将code替换成相应的值
                $('input[name="category"]').each(function (i) {
                    $(this).parent("td").append(categorys[$(this).val()]);//替换类别值
                    var job = $('input[name="jobs"]')[i];
                    $(job).parent("td").append(jobs[$(job).val()]);//替换工种
                });
            },
            error:{
            }
        });
    });
</script>
</body>
</html>
上例中的categorys、jobs可以通过异步请求从后台获取。

后台代码:

package com.zkn.learnspringmvc.news.controller;

import com.sun.org.apache.xpath.internal.operations.Mod;
import com.zkn.learnspringmvc.domain.UserScope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by zkn on 2016/12/31.
 */
@Controller
public class DynamicLoadingPageController {

    @RequestMapping("/get_dynamic_load_page.do")
    public ModelAndView getDynamicLoadPage(){

        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("titleName","动态加载页面");
        modelAndView.setViewName("dynamicLoadPage");
        return modelAndView;
    }

    @RequestMapping("/get_dynamic_load_page_data.do")
    @ResponseBody
    public List<UserScope> getDynamicLoadPageData(){

        List<UserScope> list = new ArrayList<UserScope>();
        list.add(new UserScope("张三","海淀区","coder",20,"tester"));
        list.add(new UserScope("李四","天通苑","manager",25,"developer"));
        list.add(new UserScope("王五","昌平区","coder",21,"qualitier"));
        list.add(new UserScope("马六","立水桥","manager",27,"product"));
        list.add(new UserScope("朱八","三元桥","coder",22,"design"));
        return list;
    }
}
结果如下:






相关文章
|
机器学习/深度学习 缓存 Kubernetes
FastAPI(62)- FastAPI 部署在 Docker
FastAPI(62)- FastAPI 部署在 Docker
2052 0
FastAPI(62)- FastAPI 部署在 Docker
|
负载均衡 测试技术 应用服务中间件
性能测试常见瓶颈分析及调优方法总结
性能测试常见瓶颈分析及调优方法总结
901 0
|
Kubernetes 容器 Perl
第六章 查看应用发布列表和状态以及卸载服务
第六章 查看应用发布列表和状态以及卸载服务
387 2
|
7月前
|
传感器 数据采集 人工智能
数字孪生项目开发的流程
数字孪生不仅是3D可视化,更是融合IoT数据、物理仿真与业务逻辑的系统工程。涵盖需求定义、数据采集、建模渲染、双向映射、AI仿真到集成部署六大阶段,支撑智慧工厂、城市等场景的实时监控与智能决策。(239字)
|
缓存
计算机组成原理的缓存
计算机组成原理中缓存的效率计算、缓存命中率的确定以及Cache与主存地址映射的三种方式:直接映射、全相联映射和组相联映射。
940 1
|
人工智能 监控 搜索推荐
API如何赋能电商营销:自动化促销活动生成
在电商竞争中,API通过自动化促销活动生成,实现精准营销与高效运营,提升转化率与用户体验。
|
人工智能 Java iOS开发
# 人工智能驱动的生产力手册(二)(3)
# 人工智能驱动的生产力手册(二)
275 0
|
NoSQL Java 关系型数据库
Redis-分布式锁
分布式锁的基本原理和实现方式对比 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路 在分布式情况下有多个JVM,所以就有多个锁监视器,所以就存在有多个线程拿到锁,他们就会产生不互斥的情况,这也是我们为什么要使用分布式锁的原因。而从图中我们也可以看到分布式锁的原理:让多个微服务共用一个锁监视器,这样就不会有多把锁同时存在的情况。 那么分布式锁他应该满足一些什么样的条件呢? 可见性:多个线程都能看到相同的结果,注意:这个地方说的
322 1
day20_java_巩固基础
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!
215 0
传智健康[四]
关于传智健康的相关知识
329 0
传智健康[四]

热门文章

最新文章