2015-03-03 172 views
0

我有以下getJSON這工作正常。我決定我希望能夠根據用戶選擇的內容更改頁面上顯示的數據。我有一個基於用戶選擇設置cookie的函數。我想獲取這個cookie的值,並使用它從JSON對象中獲取特定值。使用變量從JSON對象中獲取值

Cookie的值被檢索並存儲在cohort1中。

$.getJSON('all_get_login.php?cat_code=stocks&sortvalue=value&sortorder=asc', function(data) { 
    $.each(data, function(key, val) { 
     if (val.value == "Yes") { 
      var cohort1 = readCookie('cohort_id_1'); 
      console.log(cohort1); //gives expected result 
      var databaseYes = val.cohort1; //THIS LINE IS THE PROBLEM 
      var databaseNo = 100 - databaseYes; 
      $("#yes_stocks_db").append(databaseYes + "%"); 
      $("#no_stocks_db").append(databaseNo + "%"); 
    }); 
}); 

我的JSON對象看起來是這樣的:

[ 
    { 
     "cat_code": "stocks", 
     "group": "fin", 
     "main_grouping": "Financial", 
     "highest_level": "Financial", 
     "category": "Invests in Stocks and Bonds", 
     "value": "No", 
     "database_percent": "38.90", 
     "cohort_1": "43.88", 
     "cohort_2": "27.66", 
     "national_percent": "30.16" 
    }, 
    { 
     "cat_code": "stocks", 
     "group": "fin", 
     "main_grouping": "Financial", 
     "highest_level": "Financial", 
     "category": "Invests in Stocks and Bonds", 
     "value": "Yes", 
     "database_percent": "61.10", 
     "cohort_1": "56.37", 
     "cohort_2": "72.34", 
     "national_percent": "70.10" 
    } 
] 

這裏的問題:具有此var databaseYes= val.cohort1;在我getJSON行,腳本尋找JSON對象的東西,符合「cohort1 「,這永遠不會成爲對象。我在這裏需要的是var cohort1的值,而不是實際的文本「cohort1」。我怎樣才能改變這條線來適應?

+0

相當於是您如果塊缺少右撐? – 2015-03-03 14:04:11

+0

@RoryMcCrossan有一個'$ .each'循環有 – 2015-03-03 14:06:30

+0

@RoryMcCrossan如果我改變這一行(例如):var databaseYes = val.database_percent;其中「database_percent」是JSON對象中的某些東西,它可以工作正好。問題是當我嘗試在那裏傳遞一個變量而不是實際的JSON中的某個變量時。 – jonmrich 2015-03-03 14:06:56

回答

2

您可以使用[]對象表示法將變量作爲屬性名稱傳遞。

var cohort1 ='foo'; 
var databaseYes = val[cohort1]; 

這是val.foo