2013-01-17 262 views
2

我想將字段名稱壓入選項值並將結果壓入選擇的文本中。它應該是這樣的:json獲取字段名稱

<select id="ddl_fields"> 
    <option value="RoleId">e407d28a</option> 
    <option value="RoleName">Sales</option> 
</select> 

這是JSON對象從數據庫中返回:

"[{"RoleId":"e407d28a","RoleName":"Sales"}]" 

這是代碼並將其拉回到一個有效的結果:

function getFields(){ 
     var the_id = $(".hid_ID").val(); 
     var jsonText = JSON.stringify({ id: the_id }); 
     $.ajax({ 
      type: "POST", 
      url: "bc_Admin.aspx/getFields", 
      data: jsonText, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (data) { 
       if (data.d != "0") { 
        var obj = $.parseJSON(data.d); 
        //what needs to change??? 
        $.each(obj, function (index, value) { 
         $('#ddl_fields') 
         .append($("<option value=" + value.id_Role + ">" + value.RoleName + "</option>")); 
        }); 
       } 
      } //end success 
     }); 
    } 

類似對這個問題,但需要一個JQuery解決方案。 How to get/list all field names of a JSON data with ExtJS?

謝謝!

+0

的輸出是什麼?你在控制檯中有任何錯誤嗎? – Jai

+0

'value.id_Role'或'value.RoleId'? –

回答

2

假設01返回數組是你發佈的格式obj是一個數組,你想迭代數組中的對象而不是數組本身。

$.each(obj[0], function (index, value) { 
    $('#ddl_fields') 
    .append($("<option value=" + index + ">" + value + "</option>")); 
}); 
+0

工作很好!謝謝! – Rob

2

您必須循環訪問該對象的鍵,並使用hasOwnProperty來確定該對象的鍵而不是其原型。

var key, keys = []; 

for (key in obj) { 
    if (obj.hasOwnProperty(key)) 
    keys.push(key) 
} 
+0

如果我警告(鍵),我得到0. – Rob

+0

因爲你正在測試一個數組而不是一個對象。 –

0

只要改變

$.each(obj, function (index, value) { 

$.each(obj[0], function (index, value) { 

的問題是,你在你的JSON

0

不知道如果我的理解,但這裏是我會做什麼讓你想要什麼(我還做你的代碼simplier):

function getFields(the_id){ 
    $.ajax({ 
     type: "POST", 
     url: "bc_Admin.aspx/getFields", 
     data: { id : the_id }, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
      for(var i = 0; i < data.length; i++){ 
       console.log(i + ": " + data[i]); 
      } 
     }, 
     error : function(s , i , error){ 
      console.log(error); 
     } 
    }); 
} 
+1

路易十四,我以爲你死於1715年,但無論如何,你的JavaScript是最新的。 –

+1

我從地獄回來只是爲了jQuery :) –