【问题标题】:Selectlist not populating with right json data选择列表未填充正确的 json 数据
【发布时间】:2011-08-18 09:27:05
【问题描述】:

我仍然需要一些关于我的动态选择列表的帮助。

我有剧本:

function getMains(element) {
var subjectgroup = element.value;

  var select_element;

  select_element = '#mains';


$(select_element).html('');
$(select_element).append($("<option></option>").attr("value","none").html(""));
 //   $(select_element).append($("<option></option>").attr("value","all").html(""));
   if (element.value==''||element.value=='none'||element.value=='all')
  return;
 $.ajax({
  type: 'GET',
  url: 'getmainsubjects.html',
  dataType: 'json',
  data: ({id:data}),
  success: function(data) {
    $.each(function(data) {
      if (!subjectgroup) {
                                                                                                                                      $(select_element).append($("                                                                  <option>").attr("value",data.id,"items",data).html(data.description));
   } else {
    $(select_element).append($("<option>").attr("value",data.id,"items",data).html(data.description));
}

    });
  },
  error: function(data) {
    //alert("This failed!");
       }
     });

   }  

 $('select#subjectgroups').ready(function(){
  $("select#subjectgroups").find("option").each(function(i) {
  if ($(this).val()!='all'&&$(this).val()!='none') {
    $(this).append( " " + $(this).val() );
  }
});

});

   $('select#mains').ready(function(){
  $("select#mains").find("option").each(function(i) {
    if ($(this).val()!='all'&&$(this).val()!='none') {
     $(this).append( " " + $(this).val() );
    }
 });
});

以及方法:

@RequestMapping(method = RequestMethod.GET, params="id", value = "/getmainsubjects")
     @ResponseBody
   public String getMainSubjects( @RequestParam("id") int id) {


    List<MainSubjectsSimple> mains = database.getMainSubjectsSimple(id,   Localization.getLanguage());
    //System.out.println(mains.size());
    HashMap hm = new HashMap();



     for (MainSubjectsSimple mss: mains) {
        try {

            hm.put("id",mss.getId());
            hm.put("description", mss.getDescription());

        } catch (NoSuchMessageException e) {
            //hm.add(Integer.valueOf(mss.getId().toString(), translate(mss.getTranslationCode(),new Locale("fi")));
        }
    }
    String json = null;
    String _json = null;

    try {
        _json = HtmlEntityEncoder.encode(JsonUtils.javaToStr(hm));

    } catch (Exception e) {

    }
    return _json;
}

我认为我没有循环正确的值。 Mains 选择列表应基于其他选择列表进行填充,以便对象的 id 是值和描述标签。现在调用脚本中编写的 url 只返回第一个对象作为 json,而不是所有对象,并且这些对象没有显示在 mains 选择列表中。

【问题讨论】:

  • 有人吗?我想有人会提供一点帮助吗?

标签: java javascript jquery json spring-mvc


【解决方案1】:

您一遍又一遍地将相同的键放在地图上hm

HashMap hm = new HashMap();

 for (MainSubjectsSimple mss: mains) {
    try {

        hm.put("id",mss.getId());
        hm.put("description", mss.getDescription());

    } catch (NoSuchMessageException e) {
        //hm.add(Integer.valueOf(mss.getId().toString(),

translate(mss.getTranslationCode(),new Locale("fi"))); } }

您需要为 ma​​ins 中的每个条目使用不同的键或使用 Maps 的集合(例如 ArrayList)。后者的一个例子:

List hms = new ArrayList();

     for (MainSubjectsSimple mss: mains) {
        try {
            HashMap hm = new HashMap();

            hm.put("id",mss.getId());
            hm.put("description", mss.getDescription());

            hms.add(hm);

        } catch (NoSuchMessageException e) {
            //hm.add(Integer.valueOf(mss.getId().toString(), translate(mss.getTranslationCode(),new Locale("fi")));
        }
    }

    ...

    try {
        _json = HtmlEntityEncoder.encode(JsonUtils.javaToStr(hms));

    } catch (Exception e) {

    }

我不熟悉您使用的工具(JsonUtils),所以这可能无法直接工作,但原理是一样的。

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    相关资源
    最近更新 更多