2013-03-29 48 views
0

我有一個JSON響應形式的服務器響應是一個List對象與三列。但是填寫選擇選項列表我只需要使用兩個。我能夠在客戶端上接收數據,但是我無法填寫選擇選項列表。從JSON請求返回數據的填充選項列表

Jquery的

$("select#offenceCatId").change(function(){ 

    $.ajax({ 
     type:'GET', 
     url:'getCrimeTypeList.htm', 
     data:{crimeCatId: $(this).val()}, 

     headers: { 
      Accept: 'application/json' 
     }, 
     dataType: 'json', 
     success:function(data){ 
      var crimeType = JSON.stringify(data); 
      var options = ''; 

      for (var i = 0; i < crimeType.length; i++) { 
       options += '<option value="' + crimeType.crimeTypeId[i] + '">' + crimeType.crimeTypeDesc[i] + '</option>'; 
      } 
      $("select#offenceTypeId").html(options); 
     } 
    }); 
}); 

JSON數據

[{ 「crimeTypeDesc」: 「煽動謀殺」, 「crimeCatId」:4 「crimeTypeId」:39},{「crimeTypeDesc 「:」性和非性犯罪「,」crimeCatId「:4,」crimeTypeId「:40},{」crimeTypeDesc「:」色情「,」crimeCatId「:4,」crimeTypeId「:41},{」crimeTypeDesc「 「Censorship」,「crimeCatId」:4,「crimeTypeId」:42},{「crimeTypeDesc」:「法定強姦」,「crimeCatId」:4,「crimeTypeId」:43},{「crimeTypeDesc」 「,「犯罪CatId「:4,」crimeTypeId「:44},{」crimeTypeDesc「:」通姦「,」crimeCatId「:4,」crimeTypeId「:45}]

我只需要填寫選擇選項列表與crimeTypeDesc和crimeTypeId

錯誤 類型錯誤:crimeType.crimeTypeId未定義

+1

'JSON.stringify' **從數組或對象中創建** JSON。它返回一個字符串。你當然不想在字符串上工作,而是直接在數組上。 –

回答

2

如果您收到JSON數據備份,你不希望stringify電話。您應該能夠像這樣的東西來取代你的success方法:

success:function(crimes){  
    var options = ''; 

    for (var i = 0; i < crimes.length; i++) { 
     var crime = crimes[i]; 
     options += '<option value="' + crime.crimeTypeId + '">' + crime.crimeTypeDesc + '</option>'; 
    } 
    $("select#offenceTypeId").html(options); 
} 
+0

你能看看這個問題,我面臨請http://stackoverflow.com/questions/15746371/springmvc-custom-collection-editor-not-returning-data-to-jsp?noredirect=1#comment22402937_15746371 – devdar

1

你並不需要字符串化JSON對象作爲將壓平的對象,您將不再能夠使用點符號來訪問它的屬性。另外,您的其他問題是您嘗試訪問這些值的方式。你說,crimeType.crimeTypeId [i]但你需要使用crimeType [i] .crimeTypeId作爲索引引用您指的是CrimeType中的哪個對象,而不是您想要的crypeTypeIds中的哪個id(反正只有一個)。擺弄工作腳本減去ajax調用。你所需要做的就是將你在成功回調中所擁有的東西與我在小提琴中所擁有的東西一起減去json對象。您可以根據需要調整它。我留下了一個控制檯日誌,因爲我沒有你的html。

小提琴 http://jsfiddle.net/XJsH2/

$(document).ready(function(){ 
    var crimeType = [{"crimeTypeDesc":"Incitement To Murder","crimeCatId":4,"crimeTypeId":39},{"crimeTypeDesc":"Sexual and Non Sexual Assults","crimeCatId":4,"crimeTypeId":40},{"crimeTypeDesc":"Pornography","crimeCatId":4,"crimeTypeId":41},{"crimeTypeDesc":"Censorship","crimeCatId":4,"crimeTypeId":42},{"crimeTypeDesc":"Statutory Rape","crimeCatId":4,"crimeTypeId":43},{"crimeTypeDesc":"Criminal Transmission Of HIV","crimeCatId":4,"crimeTypeId":44},{"crimeTypeDesc":"Adultery","crimeCatId":4,"crimeTypeId":45}]; 
    var options = ''; 
    for (var i = 0; i < crimeType.length; i++) { 
    options += '<option value="' + crimeType[i].crimeTypeId + '">' + crimeType[i].crimeTypeDesc + '</option>'; 
    } 
    console.log(options); 
}); 
1

你不需要字符串化的數據,因爲該函數返回一個JSON對象。 jQuery對每個函數都有一個函數,您可以使用它來通過數組。

success: function(data) 
{ 
    var options = ""; 
    $.each(data, function(crime) 
    { 
    options += '<option value="' + crime.crimeTypeId + '">' + crime.crimeTypeDesc + '</option>'; 
    }); 
    $("select#offenceTypeId").html(options); 
}