Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 24.07.2024, 09:16
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,196

Сообщение от ptihka
{"Nomber":"3","Name0":"ptihka","дБм0":"-69дБм","Name1":"ptihka","дБм1":"-50дБм","Name2":"DOM_YHOME","дБм2":"-71дБм"}
Что и куда, из этого, ты хочешь поместить в select?

Ключи Name* и дБм* это какая-то фигня.
Такое можно оформить массивом такого вида

{
   list: [
      {name: '', dbm: ''},
      {name: '', dbm: ''},
      {name: '', dbm: ''},
   ]  
}
Ответить с цитированием
  #12 (permalink)  
Старый 24.07.2024, 09:23
Интересующийся
Отправить личное сообщение для ptihka Посмотреть профиль Найти все сообщения от ptihka
 
Регистрация: 20.07.2024
Сообщений: 13

Да именно поместить в select , в ключах "Name0-NameN" хранятся названия сетей которые нашел контроллер в ключах "дБм0" хранится их мощность сигнала, "Nomber":"3" количество найденных сетей.
Цитата:
Ключи Name* и дБм* это какая-то фигня.
Не понимаю почему?
Ответить с цитированием
  #13 (permalink)  
Старый 24.07.2024, 09:51
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,196

Сообщение от ptihka
Не понимаю почему?
Значит ты пока не понял про массивы...
Ответить с цитированием
  #14 (permalink)  
Старый 24.07.2024, 09:56
Интересующийся
Отправить личное сообщение для ptihka Посмотреть профиль Найти все сообщения от ptihka
 
Регистрация: 20.07.2024
Сообщений: 13

Про массивы я понимаю но как мне массив передать на страничку с ESP8266 не понимаю , или обработать JSON строку в массив ? Но я как раз и не могу обработать ее в JS.
Ответить с цитированием
  #15 (permalink)  
Старый 24.07.2024, 10:02
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,196

Сообщение от ptihka
поместить в select , в ключах "Name0-NameN" хранятся названия сетей которые нашел контроллер в ключах "дБм0" хранится их мощность сигнала, "Nomber":"3" количество найденных сетей
Вот пара вариантов. Первый с твоими данными, второй с моим вариантом - массивом.

<select id='tmp1'></select>
<select id='tmp2'></select>

<script>
// Твой вариант данных
const str1 = '{"Nomber":"3","Name0":"ptihka","дБм0":"-69дБм","Name1":"ptihka","дБм1":"-50дБм","Name2":"DOM_YHOME","дБм2":"-71дБм"}'
const obj = JSON.parse(str1)
for (let i = 0; i < +obj.Nomber; i++) {
	const o = document.createElement('option')
	o.value = obj['дБм' + i]
	o.textContent = obj['Name' + i]
	tmp1.insertAdjacentElement('beforeend', o)
}

// Мой вариант данных
const str2 = '[{"Name":"ptihka","дБм":"-69дБм"},{"Name":"ptihka","дБм":"-50дБм"},{"Name":"DOM_YHOME","дБм":"-71дБм"}]'
const arr = JSON.parse(str2)
arr.forEach(obj => {
	const o = document.createElement('option')
	o.value = obj['дБм']
	o.textContent = obj.Name
	tmp2.insertAdjacentElement('beforeend', o)
})
</script>


Сообщение от ptihka
но как мне массив передать на страничку с ESP8266 не понимаю , или обработать JSON строку в массив ? Но я как раз и не могу обработать ее в JS.
Вот в моем примере (втором) я тебе все показал...
Ответить с цитированием
  #16 (permalink)  
Старый 24.07.2024, 11:05
Интересующийся
Отправить личное сообщение для ptihka Посмотреть профиль Найти все сообщения от ptihka
 
Регистрация: 20.07.2024
Сообщений: 13

ksa огромное спасибо , но это чуть не то что я спрашиваю , нет это мне тоже надо , но основная проблемма в том как получить данные в "str2" с ответа ESP8266 Вы просто создали констовую переменную и парсите ее , а мне ее нужно взять(вытащить) из "POST" ответа из контроллера ESP8266 эти данные
Ответить с цитированием
  #17 (permalink)  
Старый 24.07.2024, 11:10
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,196

Сообщение от ptihka
Вы просто создали констовую переменную и парсите ее , а мне ее нужно взять(вытащить) из "POST" ответа из контроллера ESP8266 эти данные
Я с этим контроллером не работал... Какие данные он шлет я не знаю.
Что ты показал - с тем я и выполнил преобразование.
Ответить с цитированием
  #18 (permalink)  
Старый 24.07.2024, 13:10
Интересующийся
Отправить личное сообщение для ptihka Посмотреть профиль Найти все сообщения от ptihka
 
Регистрация: 20.07.2024
Сообщений: 13

Мне как раз нужно принять данные. Опишу последовательность действий: посылаю POST запрос на контроллер , контроллер формирует JSON строку и вместе с ответом отправляет ее на страницу такого вида
(200, "text/json", Json)
, это и передается та строка которую я указал выше , вот ее я не знаю как обработать на страничке , как ее вытащить из ответа который отправил контроллер.
Изображения:
Тип файла: jpg 2024-07-24_13-05-17.jpg (3.1 Кб, 1 просмотров)
Тип файла: jpg 2024-07-24_13-03-23.jpg (8.0 Кб, 4 просмотров)

Последний раз редактировалось ptihka, 24.07.2024 в 17:33.
Ответить с цитированием
  #19 (permalink)  
Старый 24.07.2024, 17:35
Интересующийся
Отправить личное сообщение для ptihka Посмотреть профиль Найти все сообщения от ptihka
 
Регистрация: 20.07.2024
Сообщений: 13

Блин а почему так портится качество картинок
https://ibb.co/vhvNjPp
https://ibb.co/hdV4v6d
так лучше будет
Ответить с цитированием
  #20 (permalink)  
Старый 24.07.2024, 18:10
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,783

ptihka, покажите код, который используете для отправки запроса на контроллер.
Обрабатывать ответ на запрос нужно там же, где вы его отправляете, а не пытаться его каким-нибудь хитрым образом перехватить и обработать.

По хорошему, как и написали выше, вам стоит изменить формат ответа вашего контроллера, текущий формат - форменный ужас.

UPD. по идее что-то типа такого должно получится с текущим форматом ответа контроллера (на базе кода ksa):
<select id="tmp1"></select>

<script>
fetch('/Scan_network', {method: 'post'})    
    .then(res => res.json())
    .then(obj => {
        for (let i = 0; i < +obj.Nomber; i++) {
            const o = document.createElement('option');
            o.value = obj['дБм' + i];
            o.textContent = obj['Name' + i];
            tmp1.insertAdjacentElement('beforeend', o);
        }
    });
</script>

Последний раз редактировалось Nexus, 24.07.2024 в 18:17.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загадочное явление с CSS filter voraa (X)HTML/CSS 5 06.02.2023 10:28
Изменение класса Div-ов по клику... Torch`Ok Events/DOM/Window 22 12.09.2012 16:43
Отследить клик по дочернему объекту AllanZ jQuery 3 05.09.2012 12:38
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
Можно ли одновременно изменить фон и текст в поле? Bad Request Events/DOM/Window 12 25.09.2008 23:10