我正在尝试访问数据属性中的字符串化JSON数组。但是,当我使用$(...).data('whatever')
或来获取值时$(...).attr('data-whatever')
,"
JSON内容中的HTML实体(例如)将转换为它们的字符表示形式(例如"
),这会导致在解析时会误解JSON字符串。
例如,如果我的data属性的值为["Oberlin City Club: Opera Preview","Documentary Screening "Still Dreaming: Frances Walker at 93""]
,则使用$(...).data()
return读取此内容["Oberlin City Club: Opera Preview","Documentary Screening "Still Dreaming: Frances Walker at 93""]
。为什么将JavaScript转换"
成"
?如何读取data属性而不转换"
为"
?
console.log($('div').attr('data-titles'));
console.log(JSON.parse($('div').attr('data-titles')));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-titles='["Oberlin City Club: Opera Preview","Documentary Screening "Still Dreaming: Frances Walker at 93""]'></div>
为什么JavaScript会转换
"
为“?”
在这种情况下,没有。通过"
在您的响应中使用,浏览器将as解析,"
并将其解析为属性。这是因为您使用了html实体。
HTML实体是一段文本(“字符串”),以与号(&)开头,以分号(;)结束。实体MDN
结果,JavaScript没有机会纠正这种情况。您需要找出一种"
在模板引擎中进行不同呈现的方法,最好是使用双编码对报价进行编码&quot;
(如@Barmar在评论中所述)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句