1

我希望能够将 html 元素内的哈希对定义为属性,然后将其解析为要由 javascript 处理的对象。

例子:

<div id="test" mydata="{'xkey':'xval','ykey':'yval'}">

<script>
var mydata = JSON.parse($('#test').attr('mydata'));
console.log(mydata.xkey);
</script>

但问题是它没有被转换为对象并且输出未定义。

我怎样才能做到这一点?

4

1 回答 1

2

改为使用双引号来包围键和字符串值:

mydata='{"xkey":"xval","ykey":"yval"}'

演示:http: //jsfiddle.net/reAtQ/

如果必须保留环绕双引号,则可以对内部双引号进行编码:

mydata="{&quot;xkey&quot;:&quot;xval&quot;,&quot;ykey&quot;:&quot;yval&quot;}"

演示:http: //jsfiddle.net/reAtQ/1/

或者,您可以replace在解析之前将所有单引号都带双引号:

var mydata = JSON.parse($('#test').attr('mydata').replace(/'/g, '"'));

演示:http: //jsfiddle.net/reAtQ/2/

尽管请注意,如果任何键/值包含单引号,它们将被无意中替换。

参考:

于 2013-05-17T04:17:21.737 回答