Как сохранить значение MySQL на веб-странице для последующего использования - PullRequest
0 голосов
/ 24 апреля 2020

Я извлекаю только одно значение ячейки из таблицы MySQL с php и сохраняю его в div с идентификатором. Затем я пытаюсь использовать этот div позже в JavaScript коде.

Я думаю, что код php / MySQL все правильно, но есть проблема с использованием значения div в более позднем JavaScript коде .

Каков наилучший способ сохранить значение 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 и затем сохраняет его в переменной.

Ответы [ 3 ]

1 голос
/ 24 апреля 2020

Это типичная проблема типа. MySQL хранение данных отдельно от PHP. Так что печатает в MySQL! = Печатает в PHP. Из-за этого вы сделали string (1) "1" в вашей функции PHP var_dump ().

Итак, в вашем случае, когда вы получаете значение в среде Javascript, вы должны привести это значение к нужному вам типу. В вашем случае так:

var IsItASpecial = parseInt(document.getElementById("IsShift04Special").innerHTML);

Но. Я не рекомендую использовать JS в производстве. Но для обучения это нормально!

Веселись

1 голос
/ 24 апреля 2020

Вы можете сохранить его непосредственно в переменной JavaScript.

var id=<?php echo $row['shift04_special'] ?>
0 голосов
/ 24 апреля 2020

Вы можете попытаться сохранить в локальном хранилище в формате JSON,

// Fetch from server localStorage.setItem("mysqlResponse", JSON.stringify(response));

Теперь, когда вам нужно это значение,

const data = JSON.parse(localStorage.getItem("mysqlResponse"));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...