检索由JSON对象数组多个值 [英] retrieve more than one value by JSON array objects

查看:104
本文介绍了检索由JSON对象数组多个值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到由JSON数组一个值,但我怎么可以存储多个值的JSON数组,我如何通过JavaScript的找回?

auto.jsp:

 <脚本类型=文/ JavaScript的>
 $(文件)。就绪(函数(){
    $(#二合一)。改变(函数(){// onchange事件后它去combo1.jsp
        $ .getJSON('combo1.jsp',{
            数:THIS.VALUE
        },功能(responseData){
            变种splitValues​​ = responseData.name.split(/,/);

            $(#COMBO1)空()追加(<选项>请选择< /选项>中)。;


            为(在splitValues​​ VAR IDX){
                $(#COMBO1)。追加(
                $(<选项>< /选项>中)。HTML(splitValues​​ [IDX])VAL(splitValues​​ [IDX]));
            }
        });

    });
});


    < / SCRIPT>

<身体GT;
//第一个组合框中
<选择一个id =组合NAME =计数>

     <期权价值=>请选择< /选项>

      <期权价值=一个>在< /选项>

 < /选择>

//第二个组合框中

<选择一个id =COMBO1NAME =combo1Val>

     //我只得到5在这里,但我想说明1,2,3,4,5在下拉列表中

 < /选择>
< /身体GT;
 

combo1.jsp:

 <%
字符串数=的request.getParameter(计); //由第一个组合的onchange事件,我是
获得价值一在这里
如果(count.equalsIgnoreCase(一)){
//在我的分贝有5个值,即1,2,3,4,5为单值a,但同时
填充在第二个组合,我只得到一个值5,怎么样?请忽略我的数据库
在JSP连接

  JSONObject的arrayObj =新的JSONObject();
//通过数据库连接我取5的值,但在打印在javascript我是
只得到最后一个是5,在第二个组合,我怎么能填充的所有值
1,2,3,4,5为下拉在第二个组合框中的项目?
// retrieveing​​ 5 DATAS(1,2,3,4,5)的数据库,其中NAME =一
 而(先将rs.next()){
      T1 =(字符串)(rs.getString(1)); //有与一个在5分贝值,但我
我只得到最后一个值,即5,在第二个组合
       }
       arrayObj.put(姓名,T1);
          response.setContentType(应用/ JSON);
      。response.getWriter()写(arrayObj.toString());
      }
%>
 

解决方案

我觉得你只有5个在你的第二个组合得到,因为你正在一个错误在你的循环。你可以做

  //在combo1.jsp

串了selectedValue =的request.getParameter(计);

地图<字符串,字符串>选项​​=新地图<字符串,字符串>();
 //从数据库数据
而(先将rs.next()){
    串T1 =(串)(rs.getString(1));
    options.add(T1,T1);
}
JSON字符串=新GSON()的toJSON(选项)。
response.setContentType(应用/ JSON);
response.setCharacterEncoding(UTF-8);
。response.getWriter()写(JSON);


    //获取数据
    $ .getJSON('combo1.jsp',{
        数:THIS.VALUE
    },功能(选件){
        VAR dropdown2 = $('#COMBO1');
        $('>选项,dropdown2)上卸下摆臂(); //干净的旧方案第一。
        如果(选项){
            $。每个(选,功能(键,值){
                dropdown2.append($('<选项/>')。VAL(密钥)的.text(值));
            });
        } 其他 {
            dropdown2.append($('<选项/>)文本(请选择dropdown1));
        }
    });
 

I am getting one value by JSON array, but how can I store multiple values in JSON array and how can I retrieve it by JavaScript?

auto.jsp:

 <script type="text/javascript">
 $(document).ready(function() {
    $("#combo").change(function() { // after onchange event it goes to combo1.jsp 
        $.getJSON('combo1.jsp', {
            count: this.value
        }, function(responseData) {
            var splitValues = responseData.name.split(/,/);

            $("#combo1").empty().append("<option>please select</option>");


            for (var idx in splitValues) {
                $("#combo1").append(
                $("<option></option>").html(splitValues[idx]).val(splitValues[idx]));
            }
        });

    });
});​ 


    </script>

<body>
//first combo box
<select id="combo" name="count">

     <option value="">please select</option>

      <option value="a">A</option>

 </select> 

//second combo box

<select id="combo1" name="combo1Val">

     // i am getting only "5" here, but i want to show 1,2,3,4,5 as in drop down list

 </select> 
</body>

combo1.jsp:

<%
String count=request.getParameter("count");// by onchange event of first combo, i am 
getting value "a" here
if(count.equalsIgnoreCase("a")){
// in my db there are 5 values i.e. 1,2,3,4,5 for single value "a", but while   
populating in second combo i am getting only one value "5", how? please ignore my db   
connection in jsp

  JSONObject arrayObj= new JSONObject(); 
// by db connection i am fetching 5 values but while printing in javascript i am  
getting only last one that is "5" in second combo, how can i populate all values  
1,2,3,4,5 as drop down items in second combo box?
// retrieveing 5 datas(1,2,3,4,5) from db where name =a
 while(rs.next()){
      t1=(String)(rs.getString(1));// there are 5 values in db relating to "a", but i  
am getting only last value i.e. "5" in second combo
       }
       arrayObj.put("name",t1);
          response.setContentType("application/json");
      response.getWriter().write(arrayObj.toString());
      }
%>

解决方案

I think you are getting only 5 in your second combo because you are making an error in your loop. You could do

//in combo1.jsp

String selectedValue = request.getParameter("count");

Map<String, String> options = new Map<String, String>();
 //get your data from db
while(rs.next()){
    String t1=(String)(rs.getString(1));
    options.add(t1, t1);
}
String json = new Gson().toJson(options);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);


    //to get data
    $.getJSON('combo1.jsp', {
        count: this.value
    }, function(options) {
        var dropdown2 = $('#combo1');
        $('>option', dropdown2).remove(); // Clean old options first.
        if (options) {
            $.each(opts, function(key, value) {
                dropdown2.append($('<option/>').val(key).text(value));
            });
        } else {
            dropdown2.append($('<option/>').text("Please select dropdown1"));
        }
    });

这篇关于检索由JSON对象数组多个值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆