Javascript 从HTML属性提取JSON对象

Javascript 从HTML属性提取JSON对象,javascript,jquery,json,Javascript,Jquery,Json,我正在使用JavaScript动态构建HTML页面,并使用文本设置属性。 有时文本是一个简单的字符串,有时我有一个JSON对象,我使用JSON.stringify()将其保存为字符串 $("<a id=\"ftr\" myData=\"" + myString + "\" </a>").appendTo(myDiv); 但在提取JSON对象时,我只得到一个结果:“[{” 正确使用引号 <a id="ftr" myData='[{"text":"test1","link

我正在使用
JavaScript
动态构建
HTML
页面,并使用文本设置属性。 有时文本是一个简单的字符串,有时我有一个JSON对象,我使用
JSON.stringify()
将其保存为字符串

 $("<a id=\"ftr\" myData=\"" + myString + "\" </a>").appendTo(myDiv);
但在提取JSON对象时,我只得到一个结果:
“[{”

正确使用引号

<a id="ftr" myData='[{"text":"test1","link":"http:\\www.google.com"},{"text":"test2","url":"http:www.google.com"}]'></a>

固定报价

  <a id="ftr" myData="[{'text':'test1','link':'http:\\www.google.com'},{'text':'test2','url':'http:www.google.com'}]></a>

好吧,有一个选项非常简单:您的代码无法工作,因为您需要在JSON字符串中使用双引号关闭HTML属性值。因此您可以在HTML中使用单引号。(另一个问题是,您从未关闭
a
标记。)

然后,您可以再次使用
data
功能访问数据:

$('#ftr').data('data')[0].link; // returns "http:\\www.google.com"

另一个注意事项:反斜杠用于转义,因此字符串实际上是
http:\www.google.com
。URL无论如何都使用前斜杠。这与您的问题无关,但可能会给您带来问题!
<a id="ftr" data-mydata='[{"text":"test1","link":"http:\\www.google.com"},{"text":"test2","url":"http:www.google.com"}]'></a>
var temp = $(this).data("mydata");
  <a id="ftr" myData="[{'text':'test1','link':'http:\\www.google.com'},{'text':'test2','url':'http:www.google.com'}]></a>
$('<a id=\'ftr\' myData=\'' + myString + '\'></a>').appendTo(myDiv);
$("<a id=\"ftr\" />").data({data: dataObject}).appendTo(myDiv);
$('#ftr').data('data')[0].link; // returns "http:\\www.google.com"