【问题标题】:AJAX - Problem with real time CSS stylingAJAX - 实时 CSS 样式问题
【发布时间】: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


【解决方案1】:

看起来您正在将 Javascript 和 PHP 混合在一起。您的 if 语句是 Javascript,但在 document.getElementById("artikel' . $row['id'] . '").style.color = this.responseText; 中,您试图将 id 与值 $row['id'] 连接起来,该值在您的 php 脚本中的某个位置定义?

【讨论】:

  • Jep,这正是我想要的,因为这个引用是由 PHP 进行的。
  • 哦,我现在看到您的完整脚本更新后的问题。谢谢。你能检查浏览器开发者控制台看看是否有任何错误吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 2017-01-01
  • 2013-05-24
  • 2012-12-19
  • 2013-11-12
  • 2013-08-26
  • 2011-11-23
相关资源
最近更新 更多