我用一个包含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:意外的令牌{”
我做错了什么?
感谢, 埃迪
答案 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 );