从树视图中的选定节点(href值)获取JSON

时间:2011-12-06 16:19:16

标签: javascript jquery asp.net json treeview

我用一个包含id及其值的对象填充树视图,所以它看起来像这样:

var serializer = new JavaScriptSerializer();
var rslt = serializer.Serialize(new {
        Id = node.Id.ToString(),
        impactLength = node.impactLenght.ToString()
        });
TreeNode newNode = new TreeNode(node.Name, rslt);

我在从每个节点的href链接返回其对象时遇到问题:

以下是hrefs的一些示例:

1.Root

javascript:__doPostBack('ctl00$ContentPlaceHolder1$treeViewActions','s{\"Id\":\"0\",\"impactLength\":\"1\"}')

2.It是后裔

javascript:__doPostBack('ctl00$ContentPlaceHolder1$treeViewActions','s{\"Id\":\"0\",\"impactLength\":\"1\"}\\{\"Id\":\"2\",\"impactLength\":\"1\"}')

我成功检索上面的href并只获取对象字符串部分

{"Id":"0","impactLength":"1"}{"Id":"2","impactLength":"1"}{"Id":"7","impactLength":"1"} 

但是当我尝试用jQuery.parseJSON解析它时,我得到一个例外: “未捕获的SyntaxError:意外的令牌{

我做错了什么?

感谢, 埃迪

1 个答案:

答案 0 :(得分:1)

要一次处理它们,您需要将它们构建为JSON的数组表示法。

'[{"Id":"0","impactLength":"1"},{"Id":"2","impactLength":"1"},{"Id":"7","impactLength":"1"}]'

实际上,它不是有效的JSON标记。您应该将服务器中的数据作为正确的JSON发送。


如果您无法在服务器端更改它,那么您可以尝试这一点,但不能保证:

   // assuming you have the part that you extracted stored in my_str...
var my_str = '{"Id":"0","impactLength":"1"}{"Id":"2","impactLength":"1"}{"Id":"7","impactLength":"1"}'

   // ...try this
var new_str = '[' + my_str.split( '}\\{' ).join( '},{' ) + ']';
var result = jQuery.parseJSON( new_str );