【问题标题】:retrieve more than one value by JSON array objects通过 JSON 数组对象检索多个值
【发布时间】:2012-03-04 03:19:21
【问题描述】:

我通过 JSON 数组获取一个值,但是如何在 JSON 数组中存储多个值以及如何通过 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());
      }
%>

【问题讨论】:

  • 你不想用console.log(responseData)检查结果吗?
  • 您必须使用JSONArray 并在while(rs.next()){ 循环中添加一个项目(即5 次)。
  • 也可以看看这个问题:How to generate dynamic drop down lists using jQuery and jsp? stackoverflow.com/questions/2896730/…
  • 谢谢,但我将其标记为重复,因为您想要做的完全一样(只有不同​​的触发器,加载时与更改时)。
  • @TheNail 不,请不要将其标记为重复,我的问题很少与该问题匹配,我使用的是 jsp 而不是 jstl 标签

标签: javascript jquery ajax json jsp


【解决方案1】:

我认为你的第二个组合中只有 5 个,因为你在循环中犯了一个错误。你可以这样做

//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"));
        }
    });

【讨论】:

  • 非常感谢 Nicola 的回答,我在第二个组合中只得到 5 个,但即将出现 3 个错误。第一个:Map options = new Map; 告诉 '(' 或 '[' 预期。第二个:**options.add(t1, t1);* * 告诉找不到符号方法添加。第三个:String json = new Gson().toJson(options); 告诉找不到符号类 Gson。我认为您的代码需要稍作修改,您快完成了
  • 请帮助我 Nicola 编辑您的代码,我正在尝试但无法做到。
  • @harry 抱歉,我编辑了我的代码,我忘记了 ()..对于其他错误,我认为您必须导入 Gson
  • @Nicola..请看一下this question如果可能的话请给个想法
猜你喜欢
  • 2013-12-25
  • 2013-09-14
  • 2020-06-08
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多