我将 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']);}
您应该在浏览器中检查源代码,HTML 可能无效。我认为这是来自控制台的 JavaScript 错误?
类似
onclick=editRecord('...')
的内容可能会起作用,但最好在值周围添加引号,如下所示 onclick="editRecord('...')"
。这可能是导致问题的原因,因为值中有空格。
如果您添加引号,则 JSON 会出现问题,该 JSON 也将包含引号。像这样的
onclick="editRecord('{"name":"value"}')"
,这也是无效的。
如果将双引号替换为
"
它将起作用,但 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>";
}