Извлеч данные
При помощи кода ниже я забираю значения для сайта:
function loadBlock(data2) { data2 = JSON.parse(xmlHttp.responseText); data = document.getElementsByTagName('body')[0].innerHTML; var new_string; for (var key in data2) { new_string = data.replace(new RegExp('{{'+key+'}}', 'g'), data2[key]); data = new_string; } document.getElementsByTagName('body')[0].innerHTML = new_string; handleServerResponse(); } Когда происходит "подставка" полученных значений в html проблем нет: document.write("{{variable}}");- выведет значение, которому соответствует взятое значение из файла *.json, но вот когда я пытаюсь, например, сравнить, преобразовать строку в число и т.п. то происходит работа не со значением переменной, а со строковым обозначением переменной. Поясню, например ({{variable}} - хранит значение 0): if ("{{variable}}")document.write("+"); else document.write("-"); Выдаст + А такой код: let n="{{variable}}"; n.codePointAt(0); n.codePointAt(1); ... Выдаст: 123 - что соответствует символу { 123 - что соответствует символу { ... Т.е. идет работа не со значением 0, а с наименованием переменной. Как победить? З.Ы.: Работа странички на ESP8266(ардуино), т.е. нет у меня варианта писать на PHP. |
Dimrix, у вас данные хранятся в data2, почему бы не сделать глобальной переменной?
Тогда вместо... document.write("{{variable}}");будет... document.write(data2.variable); У вас работало, поскольку это помещалось на странице перед заменой всего содержимого, если добавите позже — сработает только после очередного вызова loadBlock(data2), а там, где раньше были {{variable}} уже не сработает, поскольку их нет. вместо... if ("{{variable}}")document.write("+"); else document.write("-"); будет... if (data2.variable)document.write("+"); else document.write("-"); вместо... let n="{{variable}}"; n.codePointAt(0); n.codePointAt(1); // ... будет... let n=data2.variable; n.codePointAt(0); n.codePointAt(1); // ... |
Так как я в яве новичок, то подскажите, как мне присвоить значение этой переменной из файла.json, который имеет формат:{"name1":data1, "name2":data2...}?
|
Цитата:
Цитата:
function loadBlock(data2) { data2 = JSON.parse(xmlHttp.responseText); // ... Я имел в виду такое... var data2; function loadBlock() { data2 = JSON.parse(xmlHttp.responseText); // ...Конечно же работа с data2 тогда должна вестись после вызова loadBlock() |
Часовой пояс GMT +3, время: 15:52. |