2011-05-03 130 views
2

我有一個頁面方法,它使用jQuery.ajax();返回一個整數列表。使用Javascript解析數組字符串到數組對象

$.ajax({ 
    type: "POST", 
    url: url, 
    success: function (response) { 
     console.log(typeof (response.d)); 
     console.log(response.d); 
    } 
}); 

這是結果控制檯

string 
[1767,3071,2744,1256,657,3374,3318,2518,3910,4107,2579,2997,1182,1260,32,3185,873,1374,35,858,3126,1911,3887,3053,298,3150,4222,2692,1397,707,3958,947,1315,4379,2265,2845,3123,3857,1140,1608,2317,2512,3280,1842,1930,4334,878,1366,522,1231] 

我想從修剪的方括號和使用分裂到然後填充數組望而卻步。

所有我想要的是能夠運行

$.each(response.d, function() { 
    console.log(this); // print each number in the array 
}); 

但在我的情況下,它打印每一個字符,而不是每個號碼。

這裏的頁方法,如果有人想了解

Random rnd = new Random(); 
List<int> numbers = new List<int>(); 
for(int i=0; i<50; i++) { 
    numbers.Add(rnd.Next(1000)); 
} 


JavaScriptSerializer js = new JavaScriptSerializer(); 
return js.Serialize(numbers); 
+0

爲什麼不首先在服務器上做呢?似乎是做這件事的合乎邏輯的地方。 – epascarello 2011-05-03 01:52:36

+0

@epascarello:我上次檢查時,'List '是一個整數數組。 – Marko 2011-05-03 01:54:16

回答

5

你應該反序列化的JavaScript數組轉換成一個實際的JavaScript對象。

var responseArray = JSON.parse(result.d) 
//responseObject is now a literal javascript array, so you can iterate over it as you would any other array 

下面是一個implementation of JSON.parse

+0

JSON.parse現在是jQuery的一部分嗎? – Marko 2011-05-03 01:54:47

+0

'jQuery.parseJSON'完成了這項工作,我會在5點左右接受這個。 – Marko 2011-05-03 01:58:46

0

我認爲,如果你設置數據類型:JSON它將解析響應爲JSON。

1
  • 爲什麼不直接從服務器返回JSON object
  • 將內容類型設置爲application/json。
  • 將jQuery Ajax調用set dataType設置爲json。

而jQuery會解析你的一切。所有你需要做的是data.yourArrayName來獲取數據。