将 php 数组传递给 js 函数时出现数组项中包含空格的问题

问题描述 投票:0回答:1

我将 php 数组传递给 js 函数。但数组项包含空格。例如名称=“Ali alavi”。
当我使用

encode_json($value)
传递 js 函数时,我收到错误:(如果我的项目包含空间得到这个)

Uncaught SyntaxError: '' string literal contains an unescaped line break

此错误仅出现在编码为 js func 的 pass 上。

我的php代码:(

$value
是包含U_name,U_family,U_username,U_role的数组)

 $db = Db::getInstance();
$sql = "select * from users ";
$record = $db->query($sql);
$i = 1;
foreach ($record as $key => $value) {
    echo "<tr><td><a onclick=editRecord('" . json_encode($value) . "') data-toggle='modal' data-target='#userModal' href='#'><i class='icon-pencil'></i><a></td></tr>";
}

我的 js 功能:

 function editRecord(n) {
        let p = JSON.parse(n);
        console.log(p['U_name']);}
javascript php json encode
1个回答
0
投票

您应该在浏览器中检查源代码,HTML 可能无效。我认为这是来自控制台的 JavaScript 错误?

类似

onclick=editRecord('...')
的内容可能会起作用,但最好在值周围添加引号,如下所示
onclick="editRecord('...')"
。这可能是导致问题的原因,因为值中有空格。

如果您添加引号,则 JSON 会出现问题,该 JSON 也将包含引号。像这样的

onclick="editRecord('{"name":"value"}')"
,这也是无效的。

如果将双引号替换为

&quot;
它将起作用,但 JSON 中可能还有其他特殊字符,因此像
htmlspecialchars
这样的字符会更好。像这样:

$db = Db::getInstance();
$sql = "select * from users ";
$record = $db->query($sql);
$i = 1;
foreach ($record as $key => $value) {
    echo "<tr><td><a onclick=\"editRecord('" . htmlspecialchars(json_encode($value)) . "')\" data-toggle='modal' data-target='#userModal' href='#'><i class='icon-pencil'></i><a></td></tr>";
}
© www.soinside.com 2019 - 2024. All rights reserved.