echo "<td><button onclick='editCourse(' . $row['id'] . ')'>编辑</button></td>";为什么$row['id']报红了
时间: 2024-11-25 20:17:47 浏览: 4
php分页程序 通过<a href=?page=$j>$j</a>实现分页
5星 · 资源好评率100%
在JavaScript的字符串模板语法中,`.`用于表示属性访问,例如`$row['id']`表示从关联数组 `$row` 中获取键为 'id' 的值。但是,在JavaScript表达式中直接嵌入到HTML的onclick事件里时,可能会因为语法解析原因导致错误,尤其是在浏览器的安全策略下(比如Content Security Policy,CSP)限制了某些元字符的使用。
正确的做法是将JavaScript代码包裹在一个 `<script>` 标签内,或者使用`data-*` 属性存储ID,然后在JavaScript中通过读取这个属性来进行编辑操作:
```html
<td>
<button data-course-id="<?php echo $row['id']; ?>">编辑</button>
<script>
// 使用document.querySelector查找按钮,并提取其data属性
var button = document.querySelector('button[data-course-id]');
button.addEventListener('click', function() {
var courseId = this.dataset.courseId; // 获取"data-course-id"的值
// ... 进行编辑操作
});
</script>
</td>
```
这样做可以避免跨站脚本攻击(XSS)风险,同时也能解决JavaScript中直接插入变量可能导致的语法错误。如果是在PHP中,可以在后台生成完整的HTML片段后再返回给前端,以确保安全性和正确性。
阅读全文