2011-08-18 84 views
0

我仍然需要一些幫助,我的動態選擇列表。Selectlist沒有填充正確的json數據

我有sript:

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; 
} 

我覺得我不是循環正確的價值觀。應該根據其他選擇列表填充電源選擇列表,以便該對象的ID是值並描述該標籤。現在調用腳本編寫的url只會返回第一個對象作爲json,而不是全部,並且這些對象不會顯示在主選擇列表中。

+0

有人嗎?我想有人會幫助一下嗎? – mjgirl

回答

0

你一遍又一遍地把相同的密鑰再次向地圖HM

HashMap的HM =新的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」))); }}

您需要電源使用不同的密鑰爲每個條目或使用地圖的集合(如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) { 

    } 

我不熟悉的utils的(JsonUtils)使用的是這樣,這可能不是直接工作,但原理是一樣的反正。

+0

謝謝!!!!!!!!! – mjgirl