【问题标题】:How to passing an Object from HTML to JavaScript如何将对象从 HTML 传递到 JavaScript
【发布时间】:2021-01-14 04:33:21
【问题描述】:

如何将 html 数据属性转换为 JavaScript 对象?
我尝试使用 JSON.parse() 但出现了一些错误
我的字符串数据有结果

{
  _id: 5f71ea3362749a305427a012,
  name: 'House With Beauty Backyard',
  __v: 0
}

当我使用 JSON.parse() 时它返回错误

VM5246:2 Uncaught SyntaxError: Unexpected token _ in JSON at position 4

我的 EJS 代码

<a href="javascript:void()" data-category="<%= category[i] %>"><i class="fas fa-edit"></i></a>

我的 JS 代码

<script>
    $('#dataTable .btn-update').on('click', function () {
        let dataString = $(this).data('category');
        console.log(dataString);
        let dataJson = JSON.parse(dataString);
        console.log(dataJson);
        $('#update-modal').modal('show');
    })
</script>

【问题讨论】:

  • 能否提供更准确的问题示例,以及页面的初始状态。第一个示例中的代码是一个对象,而不是字符串,它也不是一个有效的对象,因为 GUID 需要用引号括起来。此外,您需要调用 JSON.stringify() 将其转换为 JSON,而不是 JSON.parse()

标签: javascript jquery node.js express ejs


【解决方案1】:

使用JSON.stringify。试试这个代码:

let dataJson = JSON.parse(JSON.stringify(dataString));
console.log(dataJson);

【讨论】:

    【解决方案2】:

    JSON 需要为键和字符串值加上引号 ("")。

    这将是您的具有有效形式的“字符串数据”:

    {
      "_id": "5f71ea3362749a305427a012",
      "name": "House With Beauty Backyard",
      "__v": 0
    }
    

    如果您将数据格式更改为有效的 JSON,解析错误将会消失。(RFC 8259)

    您可以在此处了解有关 JSON 的更多信息: https://tools.ietf.org/pdf/rfc8259.pdf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      • 1970-01-01
      相关资源
      最近更新 更多