[英]How to store a MySQL value in a web page for later use
我从带有 php 的 MySQL 表中仅获取一个单元格值,并将其存储在带有 id 的 div 中。 然后我稍后在 JavaScript 代码中尝试使用该 div。
我认为 php/MySQL 代码都是正确的,但是在后面的 JavaScript 代码中使用 div 值存在问题。
在 web 页面中存储 MySQL 值以供以后使用的最佳方法是什么?
目前我将返回的结果存储为:
<div id="IsShift04Special"></div>
使用:
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("IsShift04Special").innerHTML=xhttp.responseText;
}
};
这一切似乎都运作良好。
如果我在浏览器中双击页面上的 1 并将其粘贴到记事本中,它只会粘贴 1。它附近没有可见的回车或空格。
但是当我稍后尝试使用 1 值时:
var IsItASpecial = document.getElementById("IsShift04Special").innerHTML;
然后在 if 语句中使用它,它不起作用。
当我检查 IsItASpecial 的值(声明它的位置和 if 语句)时,在 Chrome 调试器中它返回为:
IsItASpecial = "↵↵↵↵↵ 1 ↵↵↵"
该表当前只有一行。
值为 tinyint(1),值为 1。
这是 php 查询:
$result=mysqli_query($conn, "SELECT shift04_special FROM `shifts` WHERE `users_username`= '$users_username' AND `companies_short_name` = '$companies_short_name' AND `job_role_short_name` = '$job_role_short_name'");
$special_shift04 = mysqli_fetch_assoc($result);
echo $special_shift04['shift04_special'];
我遇到了同样的问题:
while ($row = mysqli_fetch_array($result)) {
echo 'shift04_special';
}
和:
while ($row = mysqli_fetch_assoc($result)) {
echo $row["shift04_special"];
}
当我将 var 转储为:
var_dump($special_shift04);
这部分被退回:
["shift04_special"]=> string(1) "1" }
所以看来问题出在我返回 div 值然后将其存储在 var 中的代码上。
您可以将其直接保存在 JavaScript 变量中。
var id=<?php echo $row['shift04_special'] ?>
这是一个典型的类型转换问题。 MySQL 与 PHP 分开存储数据。 所以输入 MySQL.= 输入 PHP。 因此,您在 PHP var_dump() 函数中执行了 string(1) "1" 。
因此,在您的情况下,当您在 Javascript 环境中获得一个值时,您应该将此值转换为您需要的类型。 在你这样的情况下:
var IsItASpecial = parseInt(document.getElementById("IsShift04Special").innerHTML);
但。 我不建议在生产中使用这样的 JS。 但是学习没问题!
玩得开心
您可以尝试以 JSON 格式存储在本地存储中,
// Fetch from server localStorage.setItem("mysqlResponse", JSON.stringify(response));
现在,每当您需要价值时,
const data = JSON.parse(localStorage.getItem("mysqlResponse"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.