2011-05-03 87 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来获取数据。