Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2020, 23:12
Новичок на форуме
Отправить личное сообщение для Dimrix Посмотреть профиль Найти все сообщения от Dimrix
 
Регистрация: 27.05.2020
Сообщений: 2

Извлеч данные
При помощи кода ниже я забираю значения для сайта:
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.
Ответить с цитированием
  #2 (permalink)  
Старый 27.05.2020, 23:26
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

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);
// ...

Последний раз редактировалось Malleys, 27.05.2020 в 23:31.
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2020, 03:36
Новичок на форуме
Отправить личное сообщение для Dimrix Посмотреть профиль Найти все сообщения от Dimrix
 
Регистрация: 27.05.2020
Сообщений: 2

Так как я в яве новичок, то подскажите, как мне присвоить значение этой переменной из файла.json, который имеет формат:{"name1":data1, "name2":data2...}?
Ответить с цитированием
  #4 (permalink)  
Старый 28.05.2020, 04:47
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Dimrix
я в яве новичок,
Какая Yuva?
Сообщение от Dimrix
как мне присвоить значение этой переменной из файла.json
Вы уже присваиваете, но только зачем то путём переопределения параметра...
function loadBlock(data2) {
    data2 = JSON.parse(xmlHttp.responseText);
// ...


Я имел в виду такое...
var data2;
function loadBlock() {
    data2 = JSON.parse(xmlHttp.responseText);
// ...
Конечно же работа с data2 тогда должна вестись после вызова loadBlock()
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать данные из одинаковых форм php скрипту через AJAX? griga999 AJAX и COMET 28 10.10.2016 06:09
Отобразить данные формы на другой странице Bumer Events/DOM/Window 10 02.04.2015 18:10
Передать данные через Ajax zahod5277 AJAX и COMET 1 20.01.2015 22:31
JSON данные принять на стороне клиента tenatin Общие вопросы Javascript 5 05.03.2014 16:32
Не совсем обычный фрейм и выезжающий текст при наводе на картинку. amaz245 Элементы интерфейса 35 25.12.2010 17:29