我在文本框输入一个值,让它响应blur事件,
然后再后台获取这个值的子结果。
就比如我输入一个销售订单号salesOrderCode,然后把销售下面的所有批次号setCodeId带出来,然后返回到前台设置下拉列表。
就是怎么把JSON 里面所有的setCodeId 取出来
{'salesOrderId':'19','setCodeId':'1','setCodeId':'2','setCodeId':'3','salesOrderCode':'BYD-V--10000140'}

解决方案 »

  1.   

    這格式有問題,改成這樣
    {'salesOrderId':'19','setCodeId':['1','2','3'],'salesOrderCode':'BYD-V--10000140'}
      

  2.   

     
    'setCodeId':['1','2','3'],'  中括号里面的最后一个逗号怎么判断啊  ? 我用for循环把值取出来,最后一个逗号有什么办法?  我的JS 不熟悉
      

  3.   

    再问一个, 我把这些值都取出来之后,把它全部放到一个select 下拉列表中?
      

  4.   

     function filterTaskId1(){
                    var serverId = document.getElementById("serverId").value;
                    var store = new Ext.data.JsonStore({
                        url:'filerTask.htm?serverId=' + serverId ,
                        fields:['id','name'],
                        root:'data',
                        autoLoad:true
                    });//从后台获取任务
                    document.getElementById("taskIds").innerHTML = "";
                  taskCombox =  new Ext.form.ComboBox({//将任务显示出来
                        store: store,
                        valueField:'id',
                        displayField:'name',
                        emptyText:'请选择任务...',
                        typeAhead: true,
                        mode: 'remote',
                        triggerAction: 'all',
                        width:90,
                        editable:false,
                        selectOnFocus:true,
                        blankText : '任务不能为空!',
                        renderTo:'taskIds'
                    });
                }
      

  5.   

    我是用ajax做的 function getTransOrderInfo(){
    var salesOrderCode = $("#salesOrderCode").val();
    if (salesOrderCode.length != 0) {
    $.ajax({
    url : 'exitTrafficOrder/transportOrder!getTransOrderInfo.action',
    type : 'post',
    data : {
    salesOrderCode : salesOrderCode

    },
    cache:false,
    success : function(data) {
    alert(data)
    if (data) {
    var p = eval("(" + data + ")");
    $("#salesOrderId").val(p.salesOrderId);
    $("#salesOrderCode").val(p.salesOrderCode);
    $("#setCodeId").val(p.setCodeId);
    alert($("#setCodeId")); } else {
    alert("客户代码有误,请重新输入");
    $("#salesOrderId").val("");
    $("#salesOrderCode").val("");
    $("#setCodes").val("");
    }
    }
    });
    }
    }
      

  6.   

    6楼的代码是Ext的吗?  我看不懂啊
      

  7.   

    给你个笨办法 拿到数组的长度n 用for循环n-1次 最后一次自己写 把逗号干掉就OK了
      

  8.   

    逗号的问题不大,关键是 我取出的是个JSON 怎么把里面的值赋值给下拉列表?
      

  9.   

    直接用 返回的data[i].setCodeId  取出[1,2,3]不行么?
    然后for循环一下 创建select 的 option.
    没用过jquery的方法,
    只要记住 json的封装方式"{},{}"大括号里是对象 
    {'salesOrderId':'19','setCodeId':'1'} 里面封装的是属性("key":"value")
    属性以逗号分隔, 这样在回调函数中就好取值了.
      

  10.   

    获取JSON格式里面数据的最佳方法:
    Map<String,String> map = JSON; //JSON就是JSON格式的数据
    有几个{}就有几个Map,比如顶楼给出个格式是那样的,取值如下:
    value = map.get("salesOrderId")
      

  11.   

    jquery json select 联动2009/10/25 17:44<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    /*
    *        jquery使用方法 传入 一级ID 二级ID 数据 .D
    *        <select id="select_1"><option>请选择一级菜单</option></select>
    *        <select id="select_2" disabled><option>请选择二级菜单</option></select>
    *        $('#select_1').selectLink('#select_1','#select_2',cities)
    */
    //js
    jQuery.fn.extend({
    selectLink:function(ids,id,JSON){
    var a = [];var htmls = '';
    for(var m in JSON){a.push(m)};
    if(a != ''){
    for(var i in a){htmls = htmls + '<option>' + a[i] + '</option>'}
    $(ids).html(htmls);
    };
    $(ids).change(function(){
    var b = [];html = '';
    $(id).html(html);
    c = $(ids).val();
    $(id).attr('disabled','true');
    for(var n in JSON){
    if(c == n){
    b = JSON[n];
    if(b != ''){
    for(var j in b){html = html + '<option>' + b[j] + '</option>'}
    $(id).html(html);
    $(id).removeAttr('disabled')
    }
    }
    }
    })
    }
    }); 
    //js页面
    $(document).ready(function(){
    $('#select_1').selectLink('#select_1','#select_2',cities)
    });
    //数据
    var cities = {
    "北京":["昌平区","朝阳区","崇文区","大兴区","东城区","丰台区","海淀区","石景山区","通州区","西城区","宣武区","密云县","延庆县"],
    "上海":["长宁区","虹口区","黄浦区","静安区","卢湾区","浦东新区","普陀区","徐汇区","杨浦区","闸北区","闵行区","奉贤区","青浦区","松江区","南汇区","嘉定区","宝山区","金山区","崇明县"],
    "天津":["北辰区","大港区","东丽区","汉沽区","和平区","河北区","河东区","河西区","红桥区","津南区","南开区","塘沽区","西青区","蓟县","静海县","宁河县"],
    "重庆":["巴南区","北培区","大渡口区","涪陵区","江北区","九龙坡区","南岸区","黔江区","沙坪坝区","双桥区","万盛区","万州区","渝北区","渝中区","城口县","大足县","垫江县","丰都县","奉节县","合川市","江津市","开县","梁平县","南川市","彭水苗族土家族自治县","荣昌县","石柱土家族自治县","铜梁县","巫山县","巫溪县","武隆县","秀山土家族苗族自治县","永川市","酉阳土家族苗族自治县","云阳县","忠县","潼南县","璧山县","綦江县"],
    "香港":["香港"],
    "澳门":[],
    "河北":["石家庄","唐山","秦皇岛","邯郸","邢台","保定","张家口","承德","沧州","廊坊","衡水"],
    "山西":["太原","大同","阳泉","长治","晋城","朔州","晋中","运城","忻州","临汾","吕梁"],
    "内蒙古":["呼和浩特","包头","乌海","赤峰","通辽","鄂尔多斯","呼伦贝尔","巴彦淖尔","乌兰察布","兴安","锡林郭勒","阿拉善"],
    "辽宁":["沈阳","大连","鞍山","抚顺","本溪","丹东","锦州","营口","阜新","辽阳","盘锦","铁岭","朝阳","葫芦岛"],
    "吉林":["长春","吉林","四平","辽源","通化","白山","松原","白城","延边"],
    "黑龙江":["哈尔滨","齐齐哈尔","鸡西","鹤岗","双鸭山","大庆","伊春","佳木斯","七台河","牡丹江","黑河","绥化","大兴安岭"],
    "江苏":["南京","苏州","扬州","无锡","徐州","常州","南通","连云港","淮安","盐城","镇江","泰州","宿迁"],
    "浙江":["杭州","宁波","温州","嘉兴","湖州","绍兴","金华","衢州","舟山","台州","丽水"],
    "安徽":["合肥","芜湖","蚌埠","淮南","马鞍山","淮北","铜陵","安庆","黄山","滁州","阜阳","宿州","巢湖","六安","亳州","池州","宣城"],
    "福建":["福州","宁德","南平","厦门","莆田","三明","泉州","漳州"],
    "江西":["南昌","上饶","萍乡","九江","景德镇","新余","鹰潭","赣州","吉安","宜春","抚州"],
    "山东":["济南","青岛","淄博","枣庄","东营","烟台","潍坊","威海","济宁","泰安","日照","莱芜","临沂","德州","聊城","滨州","菏泽"],
    "河南":["郑州","开封","洛阳","平顶山","焦作","鹤壁","新乡","安阳","濮阳","漯河","许昌","三门峡","南阳","商丘","信阳","周口","驻马店"],
    "湖北":["武汉","十堰","襄樊","鄂州","黄石","荆州","宜昌","荆门","孝感","黄冈","咸宁","随州","恩施"],
    "湖南":["长沙","株洲","湘潭","岳阳","邵阳","常德","衡阳","张家界","益阳","郴州","永州","怀化","娄底","湘西"],
    "广东":["广州","清远","潮州","东莞","珠海","深圳","汕头","韶关","佛山","江门","湛江","茂名","肇庆","惠州","梅州","汕尾","阳江","河源","中山","揭阳","云浮"],
    "广西":["南宁","柳州","桂林","梧州","北海","防城港","钦州","贵港","玉林","百色","贺州","河池","来宾","崇左"],
    "海南":["海口","三亚"],
    "四川":["成都","自贡","攀枝花","泸州","德阳","绵阳","广元","遂宁","内江","乐山","南充","宜宾","广安","达州","眉山","雅安","巴中","资阳","阿坝","甘孜","凉山"],
    "贵州":["贵阳","六盘水","遵义","安顺","铜仁","毕节","黔西南","黔东南","黔南"],
    "云南":["昆明","曲靖","玉溪","保山","昭通","丽江","普洱","临沧","文山","红河","西双版纳","楚雄","大理","德宏","怒江","迪庆"],
    "西藏":["拉萨","昌都","山南","日喀则","那曲","阿里","林芝"],
    "陕西":["西安","铜川","宝鸡","咸阳","渭南","延安","汉中","榆林","安康","商洛"],
    "甘肃":["兰州","白银","定西","敦煌","嘉峪关","金昌","天水","武威","张掖","平凉","酒泉","庆阳","临夏","陇南","甘南"],
    "青海":["西宁","海东","海北","黄南","海南","果洛","玉树","海西"],
    "宁夏":["银川","石嘴山","吴忠","固原","中卫"],
    "新疆":["乌鲁木齐","克拉玛依","吐鲁番","哈密","和田","阿克苏","喀什","克孜勒苏柯尔克孜","巴音郭楞蒙古","昌吉","博尔塔拉蒙古","伊犁哈萨克","阿勒泰"],
    "台湾":["台北","高雄","基隆","台中","台南","新竹","嘉义"]
    };
    </script>
    </head><body>
    <!--我就是传说中的html-->
    <select id="select_1"><option>请选择一级菜单</option></select>
    <select id="select_2" disabled><option>请选择二级菜单</option></select></body>
    </html>
      

  12.   

    {'salesOrderId':'19','setCodeId':'1','setCodeId':'2','setCodeId':'3','salesOrderCode':'BYD-V--10000140'}
    针对上面的数据,在后台必须先处理
    JSONArray jSONArray = jSONbject.optJSONArray("setCodeId")
    这个才是你要的数据{1,2,3};
    之后你把上面的数据重新组成以下数据
    {'salesOrderId':'19','setCodeId':'1,2,3','salesOrderCode':'BYD-V--10000140'}
    在前台的取的方法是
    var json = null;
    var XX = json.setCodeId。
    XX的数据就是 1,2,3了,之后怎么做你就清楚了吧,
    你上面给出的数据在前台不好取,好像没有 optJSONArray方法,不能循环取出,在后台处理一下吧,
    如果有不明白的问题可以加我好友,具体分析。