2013-09-30 29 views
0

我有一个json字符串返回到隐藏值,我想将它分配给一个javascript数组并打印数组的每个元素。通过hdn_client_windows返回Json将字符串转换为javascript数组

JSON字符串 - [ “5703”, “5704”]

Javascript数组分配如下所示。

var times = $('#hdn_client_windows').val(); 
alert(times[0]); // this printed only--> [ 
alert(times[1]); // this printed only--> " 

我做错了什么?

+0

如您所说,它返回一个JSON *字符串* - 不是数组对象。 – Bergi

回答

7

您需要的JSON解析到一个数组与JSON.parse第一:

var times = JSON.parse($('#hdn_client_windows').val()); 

既然你已经使用jQuery,这可能是一个好主意推迟到$.parseJSON,而不是只是为了安全起见(与旧的浏览器完全兼容):

var times = $.parseJSON($('#hdn_client_windows').val()); 
+0

非常感谢您的快速回答。 – dev1234

+0

对于IE <8使用https://github.com/douglascrockford/JSON-js/blob/master/json2.js –

+1

@Murali:'$ .parseJSON'已经可以处理这种情况。 – Jon

3

你必须解析首先使用JSON.parse字符串(旧的浏览器可能需要您加载此在):

var times = JSON.parse($('#hdn_client_windows').val()); 
alert(times[0]); // Will display first item 
alert(times[1]); // Will display second item 
+0

请修复/删除您复制的代码中的评论。有些事情比误导性/错误的评论更糟糕。 – Lix

+0

@Lix谢谢。更新。 –

2

你可以使用jquery的parseJSON()函数。

var str = '["5703","5704"]'; 
var parsed = $.parseJSON(str); 

parsed对象现在包含数组:["5703","5704"]

参考 - jQuery.parseJSON(json)

“注意到​​合式JSON字符串并返回生成的JavaScript对象”。

3

使用$.parseJSON()

var str = '["5703","5704"]'; 
var times = $.parseJSON(str);