javascript - 为什么浏览器将我的单引号更改为双引号并破坏数据属性中的 JSON?

标签 javascript jquery html json

这应该比现在容易得多,但它让我卡住了。

我将一些 JSON 放在输入数据属性中,第一个键上的引号关闭了属性。

这是我正在尝试做的:

var html = `<input type="checkbox" data-values='${dataVals}' />`;

其中dataVals就是这样一个JSON字符串

'{"checked":true,"unchecked":false}'

但它在浏览器中显示如下:

<input type="checkbox" data-values="{"checked":true,"unchecked":false}">

浏览器基本上就像是这样读取它。

data-values="{"

这显然不是我想要的。

我显然遗漏了什么。有什么想法吗?

最佳答案

@T.J. 的组合克劳德和@Teemu

我在json字符串末尾添加了一个replace,用"

替换双引号
JSON.stringify({ ... }).replace(/\"/g, "&quot;")

然后当我想稍后获取值时也停止尝试运行 JSON.parse(),因为 $.data('values') 已经返回了一个 javascript 对象(当它可以时)。

JSON.parse($(this).data('values')) => $(this).data('values')

关于javascript - 为什么浏览器将我的单引号更改为双引号并破坏数据属性中的 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46410748/

相关文章:

html - 如何在html按钮中对齐文本两侧的图标

javascript - 如何使用 Node.js 在 Heroku 中绑定(bind)端口

javascript - 如何更改 mvc 4 中的动态下拉项(它不是 casecaddind 下拉列表)

javascript - Google Analytics 'Send' 方法触发, 'Set' 方法不触发

php - 通过 JQuery $.post 发布数组

css - 如何根据css中的外部div调整背景图片

javascript - 使用 minifier 时如何收集有用的 JavaScript 异常?

javascript - 根据下拉菜单更新隐藏输入

javascript - 点击后清除jquery脚本

javascript - 两个圆圈应该跟随光标——一大一小(有延迟)