当返回的JSON中有双引号时,JavaScript会中断

Gru*_*ica 6 javascript php json

我有一些简单的代码从我的数据库中提取一些值,然后将这些数据作为JSON字符串附加到按下此按钮时要使用的按钮上的数据属性中.问题是,如果从数据库返回的值之一中有双引号,我猜它会破坏JSON.

这是我的代码:

HTML:

<td
    uk-toggle="target: #entry_modal"
    class="alter_accessory"
    data-accessory='{{ json_encode(@acc) }}'
>edit</td>
Run Code Online (Sandbox Code Playgroud)

的内容 @acc

Array
(
    [uid] => 23
    [title] => Lenovo 4XB0F86403 ThinkPad 512GB 2.5" Solid-State Drive
    [model] => 4XB0F86403
    [upc] => 888772069421
    [image] => https://www.disctech.com/SCASite/product_images/4XB0F86403_1000-1.jpg
    [category] => lenovo_accessory
)
Run Code Online (Sandbox Code Playgroud)

标题中注明有双引号 "

这是点击此按钮时触发的javascript:

$(".alter_accessory").on('click', function() {

    var data = $(this).data('accessory');
    console.log(data);

    $('#entry_modal_title').text('Edit Accessory');

    $.each(data, function( index, value ) {
        $('#entry_' + index).val(value);
    });
});
Run Code Online (Sandbox Code Playgroud)

它只是循环遍历JSON并更改每个键的输入框的值

但是,当我单击按钮时,没有输入任何输入,我收到错误:

未捕获的TypeError:无法使用'in'运算符在{"uid"中搜索"length":"23","title":"Lenovo 4XB0F86403 ThinkPad 512GB 2.5"固态驱动器","型号":"4XB0F86403", "UPC": "888772069421", "图像": "https://www.disctech.com/SCASite/product_images/4XB0F86403_1000-1.jpg", "类别": "lenovo_accessory"}

我该如何解决这个问题?

请求呈现按钮的HTML:

<td
    uk-toggle="target: #entry_modal"
    style="cursor: pointer; color: blue;"
    class="alter_accessory"
    data-accessory='{"uid":"23","title":"Lenovo 4XB0F86403 ThinkPad 512GB 2.5&quot; Solid-State Drive","model":"4XB0F86403","upc":"888772069421","image":"https:\/\/www.disctech.com\/SCASite\/product_images\/4XB0F86403_1000-1.jpg","category":"lenovo_accessory"}'
>edit</td>
Run Code Online (Sandbox Code Playgroud)

(来自"查看来源")