skripach 6 1 апреля, 2022 Опубликовано 1 апреля, 2022 · Жалоба On 8/9/2021 at 10:01 AM, smart_pic said: Красивое! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сёха 0 3 апреля, 2022 Опубликовано 3 апреля, 2022 · Жалоба Привет!, во вложении пример страницы с JSON. Я конечно новичок в этом, может сделал не правильно или не оптимально... но работает... //Если есть данные if (len_data)... //Если строка "GET /", то значит это запрос HTTP if (strncmp((char*)tcp_pkt->data,"GET /", 5) == 0)... if(strstr((char*)tcp_pkt->data,"rd175phy")) { char buf[50] = {0}; char test[5] = {0}; char *pos = strstr((char*)tcp_pkt->data,"rd175phy"); test[0] = *(pos+9); if(*(pos+10)!=' ') test[1] = *(pos+10); char phy_addr = atoi(test); ... index.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 4 апреля, 2022 Опубликовано 4 апреля, 2022 · Жалоба Есть уйма библиотек, парсящих JSON. Зачем велосипеды строить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
reg33 0 5 апреля, 2022 Опубликовано 5 апреля, 2022 · Жалоба 03.04.2022 в 21:50, Сёха сказал: Привет!, во вложении пример страницы с JSON. Я конечно новичок в этом, может сделал не правильно или не оптимально... но работает... //Если есть данные if (len_data)... //Если строка "GET /", то значит это запрос HTTP if (strncmp((char*)tcp_pkt->data,"GET /", 5) == 0)... if(strstr((char*)tcp_pkt->data,"rd175phy")) { char buf[50] = {0}; char test[5] = {0}; char *pos = strstr((char*)tcp_pkt->data,"rd175phy"); test[0] = *(pos+9); if(*(pos+10)!=' ') test[1] = *(pos+10); char phy_addr = atoi(test); ... index.html 4 kB · 2 скачивания Добрый день. Я так понял ответ сервера у вас написан без применения страндартных функций. Я использовал в своем проекте exemple из MX Cube. void outputButtonState (struct netconn *conn ) // { portCHAR PAGE_BODY [100]; char *prt= "Button status WEB SITE\r\n"; char *prtbutton="Button status DISCOVERY \r\n"; sprintf ( (char*)PAGE_BODY ,"%s%s%s%s", prt, prtled_Pagestatus, prtbutton, prtled_buttonPlatastatus); netconn_write(conn, PAGE_BODY, strlen((char*)PAGE_BODY), NETCONN_COPY); } а на стороне браузера обработка запроса осуществляется с помощью JS function Timer1() { // функция для запроса данных xhr.open("GET", "content.html?r=" + Math.random(), true); //Math.random() - защита от кеширования xhr.responseType = "text"; xhr.onload = function(oEvent) { document.getElementById('information').innerHTML = xhr.response; } xhr.send(null); idTimer1 = setTimeout("Timer1()", 1000); } а в вашем примере я так понял происходит передача данных с сервера в в переменную и затем парситься а в вашем примере я так понял происходит передача данных с сервера в в переменную var jsonResponse = JSON.parse(data); и затем парситься document.getElementById('supply').innerHTML = jsonResponse["supply"]; document.getElementById('poe1sts').innerHTML = jsonResponse["poe1sts"]; document.getElementById('poe1pdc').innerHTML = jsonResponse["poe1pdc"]; document.getElementById('poe1pt').innerHTML = jsonResponse["poe1pt"]; Раздается по id в нужные ячейки таблици. Но как и по какому признаку это делается. По идее надо проанализировать переменную чтоб вытащить от туда данные. У меня вообще приходит строковый маасив Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
reg33 0 14 апреля, 2022 Опубликовано 14 апреля, 2022 · Жалоба 03.04.2022 в 21:50, Сёха сказал: Привет!, во вложении пример страницы с JSON. Я конечно новичок в этом, может сделал не правильно или не оптимально... но работает... //Если есть данные if (len_data)... //Если строка "GET /", то значит это запрос HTTP if (strncmp((char*)tcp_pkt->data,"GET /", 5) == 0)... if(strstr((char*)tcp_pkt->data,"rd175phy")) { char buf[50] = {0}; char test[5] = {0}; char *pos = strstr((char*)tcp_pkt->data,"rd175phy"); test[0] = *(pos+9); if(*(pos+10)!=' ') test[1] = *(pos+10); char phy_addr = atoi(test); ... index.html 4 kB · 3 скачивания Добрый день. Я новичек в програмировании как на Си и вообще нуб JS. Так у меня и не получилось использовать технологию JSON. На сервере вормирую посыку при запросе браузера. Сама посылка формируется void serializeToJSON (char *outArrData, const measTemp *tempData ){ char temp1[]="\"temp1\":"; char temp2[]="\"temp2\":"; char temp3[]="\"temp3\":"; sprintf (outArrData, "{%s%s,%s%s,%s%s}",temp1,tempData->sensorOnetemp,temp2,tempData->sensorTwotemp,temp3,tempData->sensorThreetemp); } По вашему примеру написал сначала попробовал принять чисто строку написав в скрипте xhr.responseType = "text"; все работает получаю стандартную на мой взгляд JSON строку в косоле выводиться {"temp1":+28.563,"temp2":+28.563,"temp3":"+temp"} 192.168.1.193:39:17 когда по вашему примеру JS пишу function Timer1() { // функция для запроса данных xhr.open("GET", "content.html?r=" + Math.random(), true); //Math.random() - защита от кеширования xhr.responseType = "json"; // преобразование ответа JSON в обьект JS xhr.onload = function(oEvent) { var data=xhr.responseText; var jsonResponse = JSON.parse(data); console.log(data); document.getElementById('sensor1').innerHTML = jsonResponse["temp1"]; document.getElementById('sensor2').innerHTML = jsonResponse["temp2"]; document.getElementById('sensor3').innerHTML = jsonResponse["temp3"]; } xhr.send(null); idTimer1 = setTimeout("Timer1()", 1000); } в консоль выводит Uncaught DOMException: XMLHttpRequest.responseText getter: responseText is only available if responseType is '' or 'text'. 192.168.1.193:22 Подскажите что я делаю не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 5 15 апреля, 2022 Опубликовано 15 апреля, 2022 · Жалоба Вот это ваша json строка? {"temp1":+28.563,"temp2":+28.563,"temp3":"+temp"} 192.168.1.193:39:17 IP адрес и почему-то два порта тоже хотите чтобы передавался как json? Тогда они странно как-то там находятся. Возможно вам еще wireshark поможет чтобы видеть что в действительности передается по сети. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
reg33 0 15 апреля, 2022 Опубликовано 15 апреля, 2022 (изменено) · Жалоба 50 минут назад, uriy сказал: Вот это ваша json строка? {"temp1":+28.563,"temp2":+28.563,"temp3":"+temp"} 192.168.1.193:39:17 IP адрес и почему-то два порта тоже хотите чтобы передавался как json? Тогда они странно как-то там находятся. Возможно вам еще wireshark поможет чтобы видеть что в действительности передается по сети. Добрый день. Ну если я в скрипте пишу xhr.responseType = "text"; то на страничке в браузере выводиться строка {"temp1":+28.563,"temp2":+28.563,"temp3":"+temp"} которую формирует сервер микроконтроллера при этом при применении console.log(xhr.response); в скрипте вывод консоль браузера вот такое {"temp1":+28.563,"temp2":+28.563,"temp3":"+temp"} 192.168.1.193:39:17. Про IP адресс и два потока не понял. JS ранее не использовал. А при попытке применения вот такого кода xhr.responseType = "json"; // преобразование ответа JSON в обьект JS xhr.onload = function(oEvent) { var data=xhr.responseText; var jsonResponse = JSON.parse(data); в консоле вот такое сообщение Uncaught DOMException: XMLHttpRequest.responseText getter: responseText is only available if responseType is '' or 'text'. 192.168.1.193:22 onload http://192.168.1.193/:22 (Асинхронный: EventHandlerNonNull) Timer1 http://192.168.1.193/:18 <анонимный> http://192.168.1.193/:32 Изменено 15 апреля, 2022 пользователем reg33 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться