精华内容
下载资源
问答
  • ajax请求返回map,前端获取结果

    万次阅读 2018-11-06 14:23:28
    因业务需求,今天需要ajax请求的时候从后端返回一个map,但是问题是怎么在前端取值,这个以前遇到过,以为会比较简单,但是百度很多答案都不完整,导致没有办法借鉴。这里做下记录 后端代码: @RequestMapping...

    因业务需求,今天需要ajax请求的时候从后端返回一个map,但是问题是怎么在前端取值,这个以前遇到过,以为会比较简单,但是百度很多答案都不完整,导致没有办法借鉴。这里做下记录

    后端代码:

    @RequestMapping(value="/getCityByLevel.action", method = RequestMethod.POST)
        public @ResponseBody Object getCityByLevel() {
            //查询一线城市
            List<RhCityDto> cityInfo = rhCityService.listCityByLevel("");
            List<RhCityDto> cityInfo1 = new ArrayList<RhCityDto>();
            List<RhCityDto> cityInfo2 = new ArrayList<RhCityDto>();
    
            for(RhCityDto info :cityInfo){
                if(CITY_LEVEL_ONE.equals(info.getLevel())){
                    cityInfo1.add(info);
                }else{
                    cityInfo2.add(info);
                }
            }
            HashMap<String, Object> map = new HashMap<>();
            map.put("cityInfo1",cityInfo1);
            map.put("cityInfo2",cityInfo2);
            return map;
        }

    可以看到上面的代码返回的是Map<String,List<Object>>,注意使用了@ResponseBody注解

    前端请求和处理代码:

    
    /**
     * 城市下拉复选框内容赋值
     */
    function initCity(){
        var json = {
        };
        $.ajax({
            type: "POST",
            url: "../bireport/getCityByLevel.action",
            contentType : "application/json",
            dataType:"json",
            data: JSON.stringify(json),
            success: function(resp){
                //这里的cityInfo1是后端map的key
                var aa = resp["cityInfo1"];
                var firstCity ="";
                for(var city in aa){
                    firstCity+= "<option value='"+aa[city].code+"'>"+aa[city].name+"</option>"
                }
                 aa = resp["cityInfo2"];
                var secondCity ="";
                for(var city in aa){
                    secondCity+= "<option value='"+aa[city].code+"'>"+aa[city].name+"</option>"
                }
                 
                $("#firstCity").html(firstCity);
                $('#firstCity').selectpicker("refresh");
                $("#secondCity").html(secondCity);
                $('#secondCity').selectpicker("refresh");
    
            },
            error:function(resp){
                $.messager.alert('出错了','系统出错,请联系管理员。','error');
            }
        });
    }
    

    上面的 dataType声明为"json"

    注意点:

    1前端发送ajax请求时 dataType一定声明为"json"

    ajax请求dataType值为json,jquery就会把后端返回的字符串尝试通过JSON.parse()尝试解析为js对象。所以如果你不将dataType设置为json,可以这样自己用json解析,如下:

    
    /**
     * 城市下拉复选框内容赋值
     */
    function initCity(){
        var json = {
        };
        $.ajax({
            type: "POST",
            url: "../bireport/getCityByLevel.action",
            contentType : "application/json",
            dataType:"text",
            data: JSON.stringify(json),
            success: function(resp){
                //自己进行json解析也可以
                resp = JSON.parse(resp);
                var aa = resp["cityInfo1"];
                var firstCity ="";
                for(var city in aa){
                    firstCity+= "<option value='"+aa[city].code+"'>"+aa[city].name+"</option>"
                }
                 aa = resp["cityInfo2"];
                var secondCity ="";
                for(var city in aa){
                    secondCity+= "<option value='"+aa[city].code+"'>"+aa[city].name+"</option>"
                }
     
                $("#firstCity").html(firstCity);
                $('#firstCity').selectpicker("refresh");
                $("#secondCity").html(secondCity);
                $('#secondCity').selectpicker("refresh");
    
            },
            error:function(resp){
                $.messager.alert('出错了','系统出错,请联系管理员。','error');
            }
        });
    }

    预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值: 

    •"xml": 返回 XML 文档,可用 jQuery 处理。
    •"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
    •"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
    •"json": 返回 JSON 数据 。
    •"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
    •"text": 返回纯文本字符串
     

    2后台方法的声明需要使用@responseBody??

    @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。

    这个注解表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用。

    在使用@RequestMapping后,返回值通常解析为跳转路径。加上@responsebody后,返回结果直接写入HTTP response body中,不会被解析为跳转路径。比如异步请求,希望响应的结果是json数据,那么加上@responsebody后,就会直接返回json数据。
     

     

    展开全文
  • ajax请求返回map如何解析

    千次阅读 2019-01-24 15:03:52
    1.ajax请求返回map如何解析  后台返回的数据是这样的:一个结果工具类Result,里面的数据是一个Map, Map里面是一个List集合 前台解析,用下拉框显示, $('.reload').click(function () { //虚拟机id var id...

    1.ajax请求返回map如何解析

      后台返回的数据是这样的:一个结果工具类Result,里面的数据是一个Map, Map里面是一个List集合

    前台解析,用下拉框显示,

    $('.reload').click(function () {
                    //虚拟机id
                    var id = $(this).parents('td').children('input:first').val();
                    //模板id
                    var tempId = $(this).attr('value');
                    //拿到部门id
                    var groupid = $(this).parents('td').children('input:eq(2)').val();
                    //拿到所有部门
                    $.ajax({
                        type: 'post',
                        async: false, //同步执行
                        url: '/admin/template/templateList',
                        data: {"templateType": 2,"adminGroup":groupid},
                        dataType: 'json', //返回数据形式为json
                        success: function (result) {
                            if (result) {
                                var map = result['data'];
                                var adminGroupBeansList = map.adminGroupBeans;
                                var templateBeanList = map.templateList;
                                var grouplength=adminGroupBeansList.length;
                                var templength=templateBeanList.length;
                                $("#departmentId").empty();
                                for (var i = 0; i <grouplength; i++) {
    
                                    if (adminGroupBeansList[i].id == groupid) {
                                        $("#departmentId").append('<option value=' + adminGroupBeansList[i].id + ' selected>' + adminGroupBeansList[i].name + '</option>');
                                    }
                                    else {
                                        $("#departmentId").append('<option value=' + adminGroupBeansList[i].id + '>' + adminGroupBeansList[i].name + '</option>');
                                    }
                                }
                                $("#templateId").empty();
                                for (var j = 0; j < templength; j++) {
                                    if (templateBeanList[j].id == tempId) {
                                        $("#templateId").append('<option value=' + templateBeanList[j].id + ' selected>' + templateBeanList[j].name + '</option>');
    
                                        if (templateBeanList[j].osType == 1) {
                                            $("#systemTypeId").empty();
                                            $("#systemTypeId").append('<option value="win"  selected>win</option>');
                                        }
                                        else if (templateBeanList[j].osType == 2) {
                                            $("#systemTypeId").empty();
                                            $("#systemTypeId").append('<option value="unix"  selected>unix</option>');
                                        }
                                    } else {
                                        $("#templateId").append('<option value=' + templateBeanList[j].id + '>' + templateBeanList[j].name + '</option>');
                                    }
                                }
                                var htmlcontent = $("#htmlId").html();
                                layer.open({
                                    title: '重装',
                                    content: htmlcontent,
                                    area: ['330px', '250px'],
                                    btn: '确认重装',
                                    yes: function () {
                                        blockUI();
                                        $.post('/admin/vm/reload', {
                                            'id': id,
                                            'templateId': $('#templateId').val()
                                        }, function (res) {
                                            unblockUI();
                                            if (res['bool']) {
                                                jSuccess("操作成功", function () {
                                                    window.location.reload();
                                                })
                                            } else {
                                                jFail(res['msg']);
                                            }
                                        })
                                    }
                                });
                            }
                        },
                        error: function (errorMsg) {
                            alert("加载数据失败");
                        }
                    });
            });

    一开始用两个ajax请求数据,结果两个ajax是异步的,胆汁页面没有显示到数据。

     

    注意这时下拉框是ajax加载的,想要触发下拉框的改变事件用他的change方法是没有效果的,需要这样:

     <select  onchange="departmentChange(this.options[this.options.selectedIndex].value)"  class="gySelect w150 fl ml10" id="departmentId">
    
                </select>

     

     function departmentChange(groupid){
    
                $.ajax({
                    type: 'post',
                    async: false, //同步执行
                    url: '/admin/template/templateList',
                    data: {"adminGroup":groupid},
                    dataType: 'json', //返回数据形式为json
                    success: function (result) {
                        if (result) {
                            var map = result['data'];
                            var adminGroupBeansList = map.adminGroupBeans;
                            var templateBeanList = map.templateList;
                            var grouplength=adminGroupBeansList.length;
                            var templength=templateBeanList.length;
                            $("#departmentId").empty();
                            for (var i = 0; i <grouplength; i++) {
                                if (adminGroupBeansList[i].id == groupid) {
                                    $("#departmentId").append('<option value=' + adminGroupBeansList[i].id + ' selected>' + adminGroupBeansList[i].name + '</option>');
                                }
                                else {
                                    $("#departmentId").append('<option value=' + adminGroupBeansList[i].id + '>' + adminGroupBeansList[i].name + '</option>');
                                }
                            }
                            $("#templateId").empty();
                            for (var j = 0; j < templength; j++) {
                                if (templateBeanList[j].id == 0) {
                                    $("#templateId").append('<option value=' + templateBeanList[j].id + ' selected>' + templateBeanList[j].name + '</option>');
    
                                    if (templateBeanList[j].osType == 1) {
                                        $("#systemTypeId").empty();
                                        $("#systemTypeId").append('<option value="win"  selected>win</option>');
                                    }
                                    else if (templateBeanList[j].osType == 2) {
                                        $("#systemTypeId").empty();
                                        $("#systemTypeId").append('<option value="unix"  selected>unix</option>');
                                    }
                                } else {
                                    $("#templateId").append('<option value=' + templateBeanList[j].id + '>' + templateBeanList[j].name + '</option>');
                                }
                            }
                            var htmlcontent = $("#htmlId").html();
                            layer.open({
                                title: '重装',
                                content: htmlcontent,
                                area: ['330px', '250px'],
                                btn: '确认重装',
                                yes: function () {
                                    blockUI();
                                    $.post('/admin/vm/reload', {
                                        'id': id,
                                        'templateId': $('#templateId').val()
                                    }, function (res) {
                                        unblockUI();
                                        if (res['bool']) {
                                            jSuccess("操作成功", function () {
                                                window.location.reload();
                                            })
                                        } else {
                                            jFail(res['msg']);
                                        }
                                    })
                                }
                            });
                        }
                    },
                    error: function (errorMsg) {
                        alert("加载数据失败");
                    }
                });
    
            }

     

     

     

    展开全文
  • //后台Map map = new HashMap();map.put("result",1);map.put("count",count);JSONObject json = JSONObject.fromObject(map);response.getWriter().print(json.toString());////前台用net.sf.json.JSONObject将java...

    //后台

    Map map = new HashMap();

    map.put("result",1);

    map.put("count",count);

    JSONObject json = JSONObject.fromObject(map);

    response.getWriter().print(json.toString());//

    //前台

    用net.sf.json.JSONObject将java.util.Map封装后,使用javascript获取的方法:

    在ajax

    success:function(json)

    {

    var map=eval('('+json+')');//用eval函数将json转化为对象

    //然后就可以通过map.key获取对应的value

    alert(map.result);

    alert(map.count);

    }

    //遍历jsonobject,转换为map

    JSONObject joContent = new JSONObject(content);

    Map targetMap= new HashMap<>();

    for (Iterator iter = joContent.keys(); iter.hasNext();) {

    String key = (String) iter.next();

    targetMap.put(key,joContent.get(key));

    }

    总结

    如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

    展开全文
  • jsp页面的ajax取值

    千次阅读 2015-06-10 10:31:33
     Map,String> params=new HashMap,String>();  if(null!=fsn && !fsn.equals("")){  params.put("fsn", fsn);//终端序列号  params.put("status",status);  }  else{   params.put(...

    jsp页面代码

    function test2(value) {
                 $.post("term_searchTagency.shtml", {
                        "agencyID" : $("#agency").val(),
                        "type" : "agen",
                        "status" : $("#status").val()
                    }, function(data2) {
                        $('#dealer').find("option:not(:first)").remove();
                        var dealers = "";
                        var obj = eval("(" + data2 + ")");
                        $.each(obj, function(i, item2) {
                   
                            dealers += "<option value=\""+item2.dealderID+"\">"
                                    + item2.dealerName + "</option>";
                        });
                        $("#dealer").append(dealers);
                    });
     };

    后台代码

    public String searchTagency(){
            JSONObject jsonObject = new JSONObject();
            JSONArray jsonArray = new JSONArray();
            if (null!=type && type.equals("banch")) {// 分公司请求
                Set<TAgency> agencys = null;
                if (NumberUtil.isNumber(branchID)) {
                    branchCompany = branchCompanyService.get(Integer
                            .parseInt(branchID));
                    agencys = branchCompany.getAgencySet();
                }
                if (null != agencys) {
                    for (TAgency agency : agencys) {
                        jsonObject.put("agencyID", agency.getFid());
                        jsonObject.put("agencyName", agency.getFname());
                        jsonArray.add(jsonObject);
                    }
                } else {
                    jsonObject.put("no", "该分公司下面没有代理商");
                    jsonArray.add(jsonArray);
                }
            }
            if(null!=type && type.equals("agen")){//经销商
                Set<TDealer> dealders=null;
                if(NumberUtil.isNumber(agencyID)){
                    agency=agencyService.get(Integer.parseInt(agencyID));
                    dealders=agency.getDealerSet();
                }
                if(null != dealders){
                    for(TDealer dealer:dealders){
                        jsonObject.put("dealderID", dealer.getFid());
                        jsonObject.put("dealerName", dealer.getFname());
                        jsonArray.add(jsonObject);
                    }
                }
                else{
                    jsonObject.put("no", "该代理商下面没有经销商");
                    jsonArray.add(jsonObject);
                }
                
            }
            if(null==type){//根据所有筛选出的条件 查询
                page = new Page();
                if (StringUtils.isNotBlank(currentPage)
                        && NumberUtil.isNumber(currentPage.trim())) {
                    page.setCurrentPage(Integer.parseInt(currentPage.trim()));
                }
                Map<String,String> params=new HashMap<String,String>();
                if(null!=fsn && !fsn.equals("")){
                    params.put("fsn", fsn);//终端序列号
                    params.put("status",status);
                }
                else{            
                    params.put("branchCompanyID", branchID);        //分公司id
                    params.put("agencyID", agencyID);                //代理商id
                    params.put("dealerID", tdealerID);                //经销商id
                    params.put("fsn", fsn);//终端序列号
                    params.put("status",status);    
                }
                type="1";//判定 翻页需要隐藏和显示的
                Object[] result= termNoService.findAllByPage(params,page);
                if (result != null && result.length > 0) {
                    termNoList = (List<TTermNo>) result[0];
                    Object count = result[1];
                    for(TTermNo term:termNoList){
                        posList=new ArrayList<TPOS>();
                        for (TTermNo t : termNoList) {
                            TPOS tpos = posService.getTPOSByFsn(t.getFsn());
                            if(tpos!=null){            
                                posList.add(tpos);                    
                            }
                        }
                    }
                    if (null != count) {
                        page.setTotalRow(Integer.valueOf(count + ""));
                    }
                }
                return "search";
            }
            PrintWriter writer = null;
            try {
                writer = ServletActionContext.getResponse().getWriter();
                System.out.println(jsonArray);
                writer.print(jsonArray);
                writer.flush();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                writer.close();
            }
            return null;
        }




    展开全文
  • 求大神给分详细的讲解或案例,在线急等。
  • ![图片说明](https://img-ask.csdn.net/upload/201807/09/1531104604_391939.png) 如图所示,返回的是这样的数据,我应该怎么遍历取key和value
  • Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回 一、自定义工具类(简单易用)-下面是我写的一个简单的工具类 package com.test.util; import java.io.IOException; import java.util.Map; import ...
  • In order to do this, you simply need to call Gson.toJson(map) where map holds key myText and value as List or array. In other words: Map> mapJson = new LinkedHashMap>(); mapJson.put("myText", getList...
  • 直接对ajax返回的json对象数组通过for循环追加属性,2.data变量在渲染以后结构发生变化,如何取值解决方法:1.ajax返回的结果先赋值给临时变量temp2.通过for循环给temp数组内的对象添加新属性result3.把tem...
  • 在使用jquery 框架中的 ajax时,如果要将参数传递到action 中,那么有以下两种,方式:第一... //通过表单元素id取值。var name = $("#name").val();$.ajax({type : "POST",url : url,async:true,dataType:'json',da...
  • Ajax 获取Map集合

    万次阅读 2015-06-07 02:30:39
    Java代码:Student stu1=new Student(); stu1.setName("Ajax1"); stu1.setSex("nan"); stu1.setAge(22); Student stu2=new Student(); stu2.setName("Ajax
  • Map返回到前端是一个json对象 ,对象是按属性取值的,key就相当于对象的属性,有什么可以为属性排序吗?? 而 list返回到前端是json对象数组 ,数组是按下标有序的。下图list集合返回的格式:   所以,...
  • JSON数组格式解析 + ajax后台取值

    千次阅读 2018-10-30 19:49:10
    $.ajax( { url:"/examineShow", data:{}, type:"post", dataType:"json", success:function (data) { if(data.code == 200){ optionJson = data.data; var html = ""; if(optionJson.length > 0){ for...
  • ajax请求返回List

    万次阅读 2018-11-06 14:46:20
    后端代码(注意红色部分) @RequestMapping(value="/getJobByLevel.action"...public @ResponseBody Object getJobByLevel( @RequestBody Map&lt;String,String&gt; queryConditionMap) { Lis...
  • 1,现在需要从过滤器里面获取HttpServletResponse,再从HttpServletResponse获取返回给前端的json数据。2,场景,当用户发生了增删改的操作的时候,获取用户操作的url,参数,然后根据操作是否成功,若是成功,那么...
  • 网上看到很多关于Struts2+ajax+jquery+json的例子,但是很多都不完整,也看不明白,主要原因是返回jsno类型数据和原来的返回字符串类型数据不一样,并且网友们实现步骤没有说清楚,让初学的朋友捉摸不透到底该怎么做...
  • 网上看到不少关于Struts2+ajax+jquery+json的例子,可是不少都不完整,也看不明白,主要缘由是返回jsno类型数据和原来的返回字符串类型数据不同,而且网友们实现步骤没有说清楚,让初学的朋友捉摸不透到底该怎么作。...
  • // 取值 // alert($("input[name='username']").val()); // alert($("input[name='password']").val()); // alert($("input[name='sex']:checked").val()); // alert($("...
  • 项目场景:示例:浙政钉通过手机号码获得用户的accountId,通过返回的json 找到用户accountId “逗号”拼接,传入浙政钉消息发送接口 返回的数据样式: 提示:返回的内容 String 接收 json格式 String apiResult = ...
  • ...我在后台结果视图中实用的stream流的形式返回的result,想弄明白,ajax跟struts2之间的数据流转到底是怎么样的形式?????如果是Jason的话,应该怎么取值????有没有深入研究过的人??
  • //得到的d是一个形如{"key":"value","key1":"value1"}的数据类型,然后取值出来 $( "#msg" ).text( "" + d.msg + "" ); } }); }); }); script > head > < body > < input type = "text" ...
  • 取值 方法一: 以json的方式提交到后台: 前端: var commentId = e.getAttribute("data-id"); $.ajax({ type: "POST", 提交方式的类型 url: "/addLike", //提交的路径 con...
  • Map map = new HashMap(); map.put("result", 1); map.put("count", count); JSONObject json = JSONObject.fromObject(map); response.getWriter().print(json.toString());// //前台 ...
  • ajax请求返回的数据一直是undefined

    千次阅读 2019-12-09 20:30:15
    其中参数1有如下取值: File:将obj对象转换为JSON字符串,并保存到指定的文件中; Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中; OutputStream:将obj对象转换为JSON字符串,并将json...
  • 问题描述: ajax中走error : function...这种类型返回,这是可行的,但是出于好奇,想看看Map返回可不可行。结果出乎我预料,返回Map时JSP页面总是走error : function(e) {},这就奇怪了,刚才用ResponseEntity返回...
  • 1、JSP页面使用脚本代码执行ajax请求 2、Action中查询出需要返回的数据,并转换为json类型模式数据 3、配置struts.xml文件 4、页面脚本接受并处理数据  网上看到很多关于Struts2+ajax+jquery+json的例子,...
  • 后台返回map字符串,前台解析:

    千次阅读 2017-04-17 15:40:38
    后台返回map字符串,前台解析:(这种对于ajax中标明datatype:‘json’)  List codeLibraryjypzList= tbCusFirmChgService.getCodeLibraryListForjypz(jypzInfoMap); model.addAttribute("codeLibraryjypzList...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,491
精华内容 2,996
关键字:

ajax取值返回map