You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP生成HTML按钮传多参数报错:Uncaught SyntaxError

问题解决:PHP循环生成HTML按钮传参的语法错误

错误原因

你的代码里onclick属性用单引号包裹,但传递字符串参数时又用了单引号,导致引号嵌套冲突,提前闭合了onclick的属性值,最终生成的HTML语法无效,触发Uncaught SyntaxError: Unexpected end of input错误。

比如生成的错误HTML会是这样:

<button class='btn btn-danger' onclick='deleteEntry(1,'xxx','yyy')'>Eliminar</button>

这里第二个单引号会直接闭合onclick的属性值,剩下的xxx','yyy')就成了无效的HTML代码。

解决方案

方案1:转义引号并调整嵌套方式

将echo的外层字符串用单引号包裹,内部HTML属性用双引号,同时对字符串参数的单引号进行转义:

echo '<td><button class="btn btn-danger" onclick="editEntry(' . $row['id'] . ')">Editar</button> <button class="btn btn-danger" onclick="deleteEntry(' . $row['id'] . ',\'' . $row['nombre'] . '\',\'' . $row['signo_solar'] . '\')">Eliminar</button></td>';

这样生成的HTML会是正确的嵌套格式:

<button class="btn btn-danger" onclick="deleteEntry(1,'xxx','yyy')">Eliminar</button>

方案2:使用htmlspecialchars处理参数(更安全)

用htmlspecialchars转义字符串中的特殊字符(包括引号),同时调整引号嵌套,避免冲突的同时防止XSS攻击:

// 提前处理参数,转义特殊字符
$id = $row['id'];
$nombre = htmlspecialchars($row['nombre'], ENT_QUOTES);
$signo_solar = htmlspecialchars($row['signo_solar'], ENT_QUOTES);

// 输出按钮
echo "<td><button class='btn btn-danger' onclick='editEntry($id)'>Editar</button> <button class='btn btn-danger' onclick='deleteEntry($id,\"$nombre\",\"$signo_solar\")'>Eliminar</button></td>";

ENT_QUOTES参数会同时转义单引号和双引号,确保参数中的引号不会破坏HTML语法。

内容的提问来源于stack exchange,提问作者user22741203

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:29:59