【发布时间】:2019-12-16 12:16:30
【问题描述】:
我有一个 HTML 文件,它使用 PHP 在表中生成一个 DB 条目列表。该列表通过使用 JS-DOM 并对我的 PHP 后端发出 XMLHttpRequest 进行行标识。 在那里我决定哪种颜色作为响应。当它被响应时,颜色由
设置if (this.readyState === 4 && this.status === 200) {
document.getElementById("artikel' . $row['id'] . '").style.color = this.responseText;
}
问题是:
只有在以下情况下才能正确设置/更改颜色
1) 我正在刷新页面 -> 在 AJAX 的 PHP 后端中出现新数据库条目的原因
2) 我至少点击了 2 次p>
有什么问题?
这是生成条目的代码
<?php
foreach ($dataOfDBselect as $row) {
$color = "";
if ($row['status'] == "false") {
$color = "#130f40";
} else {
$color = "#badc58";
}
echo '<tbody class="table-text-small" id="artikel' . $row['id'] . '" style="color: ' . $color . ';">
<th class="text-table table-inner-big">' . $row['name'] . '</th>
<th class="table-inner-big text-table">' . $row['amount'] . '</th>
<th class="table-inner-big text-table"><i class="far fa-check-square" id="checkArtikel_' . $row['id'] . '"></i></th>
</tbody>
<script>
document.getElementById("artikel' . $row['id'] . '").addEventListener("click", function () {
let request = new XMLHttpRequest();
request.open("GET", "./core/handler_ArtikelChecked.php?f_identify=' . $row['id'] . '");
request.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
document.getElementById("artikel' . $row['id'] . '").style.color = this.responseText;
}
};
request.send();
});
</script>';
}
?>
这就是我的 PHP 后端正确返回到我的网站的内容
echo $toColor; 类似于$toColor = "#badc58";
【问题讨论】:
-
也许你可以分享完整的方法?我们不知道
$row['id']指的是什么。也许您可以在控制台中或通过警报跟踪this.responseText的值。也许您还可以检查"artikel' . $row['id'] . '"是否真的是您所期望的(这对我来说看起来很奇怪) -
'$row['id']' 是数据库条目 ID,用于准确定义使用和单击的数据集。 'this.responseText' 将它的响应作为字符串作为'#badc58' 并且颜色在我的网站上作为响应正确
-
所以我认为使用
.style.color的颜色设置是问题原因,当我将文本设置为类似标题时,我从响应中获得了正确的颜色值。
标签: javascript php html ajax dom