gpt4 book ai didi

javascript - 在具有转义字符(双引号)的对象上使用 json 编码

转载 作者:行者123 更新时间:2023-11-30 19:01:04 30 4
gpt4 key购买 nike

我正在使用 mysqli::real_escape_string在将它们发送到数据库之前,对从我的表单收到的输入进行处理。
在另一个页面中,我正在接收这些数据并使用 json_encode
将每一行数据转换为 JSON然后我将它们发送到前端作为响应:

        $usersInstance = new usersRepository();
$users = $usersInstance->allUsers();
ob_start();
foreach ($users as $index => $user) {

$userObj = (object) [];
$userObj->id = $user['id'];
$userObj->email = $user['email'];
$userObj->displayname = $user['display_name'];
$userObj->grade = $user['grade'];
$userJson = json_encode($userObj);
$userBox = <<<HTML
<div class="user-box" data-userjson={$userJson}>

<div class="user-cell " >
<span> {$user['email']} </span>
</div>

<div class="user-id-holder" style="visibility:hidden;width:0px;height:0px;overflow:hidden;display:inline-block">
{$user['id']}
</div>

<div class="user-cell" >
<span>{$user['display_name']}</span>
</div>
<div class="user-cell " >
<span>سطح دسترسی : {$user['grade']}</span>
</div>
<div class="user-cell">
<span class="user-action-btn" data-action="edit"><span>ویرایش</span></span>
<span class="user-action-btn" data-action="delete"><span>حذف</span></span>
</div>
</div>
HTML;

echo $userBox;
}
$renderedContent = ob_get_contents();
ob_end_clean();

然后我想像这样在 javascript 中访问这些 JSON

let UserBox = $(this).parent('div').parent('div.user-box');
let userObj = $(UserBox).data('userjson');

问题是当我尝试访问对象时出现错误和未定义,因为转义双引号表示为 " 它使对象成为无效的 JSON ,请参见下面的示例输出:
{"id":"32","email":"test3@gmail.com","displayname":"test'and'more'test"","grade":"2"}
displayname 属性 的值包含双引号,这会导致对象无效。

我的问题是,当我使用 JSON 我想在 html 中显示值并且它们在打印时变为 " 时,我如何才能保持转义字符转义。所以实际问题是如何才能我将 "" 分开?

最佳答案

使用htmlentities在处理表单数据时转义引号并将它们转换为 " 。然后,当您取回数据并对其使用 json_encode 时,您的 JSON 内容应该有真正的双引号,并且 HTML 中的引号是 ",这将被正确解析和呈现。

关于javascript - 在具有转义字符(双引号)的对象上使用 json 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59512085/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com