JS:传递的JSON数组丢失引号

时间:2019-06-19 22:55:36

标签: javascript html json

基本上,我试图通过onclick将json-array传递给函数

<button
  onclick='showAccountOverviewModal("<%= accounts[j].name %>", `<%= accounts[j].bills%>`)'>
  Click Me
</button>

但是,当我尝试通过JSON.parse解析字符串时,我意识到,键和值都没有引号。有什么“好的”方法可以解决此问题,还是需要使用正则表达式?

最诚挚的问候

编辑

这是相应的功能:

function showAccountOverviewModal(accountName, accountBills) {
  $("#accountModalOverviewTitle").text(accountName);
  accountBills = JSON.parse(accountBills);
  console.log(accountBills);
  accountBills.forEach(bill => {
    console.log(bill);
  });
}

2 个答案:

答案 0 :(得分:1)

似乎您可能正在传递一个javascript数组(已解析),而不是JSON数组(表示该数组的字符串)。如果是这样,请在JSON.parse之前运行

console.log(Array.isArray(accountBills))

应打印true。如果它实际上是JSON,则将打印false并运行

console.log(typeof accountBills)

将打印string

如果它是一个数组,则不需要解析它,删除JSON.parse行应该可以使它按预期工作。

答案 1 :(得分:1)

将使用data- *属性重写代码。如果您不希望使用这种方法,则可以忽略。

html

<button class="showaccountmodal" 
data-accountName="<%= accounts[j].name %> 
data-bill="<%= accounts[j].bills %>">Click Me</button>

jquery

$(".showaccountmodal").on('click', function() {
var accountname = $(this).data('accountName');
var bill = $(this).data('bill');
console.log(accountname);
console.log(bill);
 accountBills.forEach(bill => {
    console.log(bill);
  });
} );

这也是在html Store JSON object in data attribute in HTML jQuery

中存储json对象的参考