2012-04-03 64 views
0

我有這樣的代碼,如何獲得長度字符串JSON在JS或jQuery的

buildSelect: function (data) { 
    var response = $.parseJSON(data); 


    alert(response.length); 
    var s = "<select>"; 
    if (response && response.length) { 
    for (var i = 0, l = response.length; i < l; i++) { 
     var ri = response[i]; 
     s += '<option value="' + ri.CUSTOMS_ID + '">' 
      + ri.CUSTOMS_NAME + '</option>'; 
    } 
    } 
    return s + "</select>"; 
} 
        }, 

我想查詢響應不爲空或空,並得到長度我寫這篇文章的代碼response.length 但返回undifine
並返回數據

{"rows":[{"id":1,"cell":["1","بندرامام خميني","IMAM KHOMEINI PORT","True",null]},{"id":2,"cell":["2","آبادان","ABADAN","True",null]},{"id":3,"cell":["3","خرمشهر","KHORRAMSHAHR","True",null]},{"id":4,"cell":["4","بندرعباس","BANDAR ABBAS","True",null]},{"id":5,"cell":["5","بوشهر","BUSHEHR","True",null]},{"id":6,"cell":["6","تهران","TEHRAN","True",null]},{"id":7,"cell":["7","شيراز","SHIRAZ","True",null]},{"id":8,"cell":["8","دبي","DUBAI","True",null]}],"Page":0,"Total":0,"Records":0} 

我想如果行不爲空,所有的子項添加到下拉列表

plese幫助我,謝謝

+0

函數(數據)中的數據是否已經是JSON對象? – 2012-04-03 06:36:35

+0

'空'是什麼意思?這個'{}''? – Engineer 2012-04-03 06:46:56

+0

如果行不是子例子[{「id」:1,「cell」:[「1」,「بندرامامخميني」,「IMAM KHOMEINI PORT」,「True」,null]},... – Pouya 2012-04-03 06:49:28

回答

2

的問題是,response沒有length財產。然而,response.rows,作爲Array,請問:

var response = $.parseJSON(data); 

alert(response.rows.length); 

然後,您可以參考保存到response.rows和使用前進:

var rows = response.rows; 
alert(rows.length); 

var s = "<select>"; 
if (rows && rows.length) { 
    for (var i = 0, l = rows.length; i < l; i++) { 
    var ri = rows[i]; 
    s += '<option value="' + ri.id + '">' + ri.cell[1] + '</option>'; 
    } 
} 
return s + "</select>"; 
+0

ri.CUSTOMS_ID或ri的返回數據。CUSTOMS_NAME返回undifine – Pouya 2012-04-03 07:05:35

+0

@mohsen啊。這是因爲名稱'CUSTOMS_ID'和'CUSTOMS_NAME'沒有在JSON中定義。在每次迭代中,'ri'將只有2個屬性 - 一個'id'數字和一個'cell'數組。或許,'ri.id'和'ri.cell [1]'是你正在尋找的東西。 – 2012-04-03 07:11:40

+0

@ Jonathan Lonowski:謝謝 – Pouya 2012-04-03 07:16:02

1

$.parseJSON(data)返回JavaScript對象,而不是一個字符串。你不能在對象上使用長度。根據documentation$.parseJSON將返回null,如果您傳入任何內容,空字符串,null或未定義。

UPD: 在您的具體情況下,檢查response不是null(不需要檢查長度)就足夠了。如果數據不是有效的JSON,則$.parseJSON(data)將通過例外。你也可能想要抓住它。

+0

它可能是數組 – 2012-04-03 06:38:15

+0

@JibiAbraham檢查問題的標題。 – Engineer 2012-04-03 06:43:45

+0

@Engineer - 檢查OP發佈的 – 2012-04-03 06:45:00

1

一旦你解析了JSON字符串,在這種情況下,你會得到一個對象var response。 JavaScript對象沒有長度屬性。如果您只想檢查空值或空值,請執行以下一項或多項操作。

var data = "";//in case of null data 
if(!data){ 
    //do something 
} 

//or 
if(data === ''){ 
    //do something 
} 

現在,如果你要檢查你是否rows是空的,

var data = { 
    rows:{} 
};//assuming an empty rows object 

if($.isEmptyObject(data.rows)){ 
    //do something 
} 
1

由於對象不包含length屬性/方法有對於對象的長度沒有意義。您可以爲每個對象分配方法和屬性,預寫或自定義。

在你的情況下,嘗試搜索對象的數據/屬性,如

的(響應密鑰){

檢查一些性能上的按鍵

相關}

相關問題