Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.09.2015, 08:20
Аватар для mr_smit
Новичок на форуме
Отправить личное сообщение для mr_smit Посмотреть профиль Найти все сообщения от mr_smit
 
Регистрация: 09.09.2015
Сообщений: 9

Checkbox переключатель (CSS) не реагирует на данные из AJAX запроса
Здравствуйте. На странице присутствует 2 переключателя которые сделаны из checkbox при помощи чистого CSS. Взято отсюда. Раз в секунду страница отправляет AJAX запрос на сервер по адресу update.php. Сервер отдает такой ответ:

HTTP/1.0 200 OK
Content-Type: application/json; charset=UTF-8;

{"temp":"23.0","hud":"49.0","switch1":"false","switch2":"false"}


Соответственно если открыть в браузере этот адрес то на странице появится:
{"temp":"23.0","hud":"49.0","switch1":"false","switch2":"false"}

Эти данные подставляются по id в таблицу на странице. Так вот данные по параметрам temp и hud подставляются и отображаются. А состояние выключателей не меняются. Код такой:
document.getElementById("temp").innerHTML = jsonObj.temp+" °С";
document.getElementById("hud").innerHTML = jsonObj.hud+" %";
document.getElementById("module_1-switch_1").checked = jsonObj.switch1;"
document.getElementById("module_1-switch_2").checked = jsonObj.switch2;"


При загрузке страницы оба переключателя сразу включаются и их состояние больше никак не меняется. Несмотря на то что может приходить, например, "switch1":"true","switch2":"false". Страница целиком во вложении. Подскажите что не так. Тестирую в Mozilla.
Изображения:
Тип файла: jpg prscr.JPG (7.7 Кб, 4 просмотров)
Вложения:
Тип файла: zip Page.zip (1.6 Кб, 0 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 09.09.2015, 08:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

"false" - не должно быть строковым значением.
Ответить с цитированием
  #3 (permalink)  
Старый 09.09.2015, 08:32
Аватар для mr_smit
Новичок на форуме
Отправить личное сообщение для mr_smit Посмотреть профиль Найти все сообщения от mr_smit
 
Регистрация: 09.09.2015
Сообщений: 9

Где то в глубине души я думал про это, но не пойму как передать через AJAX не строковое значение?

P.S. Может просто кавычки вокруг false убрать? Или так нельзя?
Ответить с цитированием
  #4 (permalink)  
Старый 09.09.2015, 08:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от mr_smit
P.S. Может просто кавычки вокруг false убрать? Или так нельзя?
А чем формируется данные значения и как преобразовываются в JSON?
Ответить с цитированием
  #5 (permalink)  
Старый 09.09.2015, 08:52
Аватар для mr_smit
Новичок на форуме
Отправить личное сообщение для mr_smit Посмотреть профиль Найти все сообщения от mr_smit
 
Регистрация: 09.09.2015
Сообщений: 9

Сообщение от laimas Посмотреть сообщение
А чем формируется данные значения и как преобразовываются в JSON?
Сервер на базе микроконтроллера и модуля Wiznet W5500. Ответ я формирую сам на основании считанных данных. Могу любой ответ сформировать. Есть у меня буфер для ответа и в него я накидываю данных:
else if (strcmp(url,"/update.php")==0) {
  strcpy((char*)buf,"HTTP/1.0 200 OK\r\n");
  strcat((char*)buf, "Content-Type: application/json; charset=UTF-8\r\n\r\n");

  strcat((char*)buf,"{\"temp\":\"");
  strcat((char*)buf,temp);
  strcat((char*)buf,"\",\"hud\":\"");
  strcat((char*)buf,hud);
  strcat((char*)buf,"\",\"switch1\":\"");
  
  if ((output & (1<<0)) == 1) {
    strcat((char*)buf,"true");
  }
  else {
    strcat((char*)buf,"false");
  }

  strcat((char*)buf,"\",\"switch2\":\"");

  if ((output & (1<<1)) == 1) {
    strcat((char*)buf,"true");
  }
  else {
    strcat((char*)buf,"false");
  }

  strcat((char*)buf,"\"}");

  ret=send(sn,buf,strlen((char*)buf));
  ...


На выходе браузер получает:
HTTP/1.0 200 OK
Content-Type: application/json; charset=UTF-8

{"temp":"23.0","hud":"49.0","switch1":"false","switch2":"false"}


Могу true/false без кавычек приклеить. Так можно? Или нужно? Просто с форматом JSON первый раз столкнулся.

Последний раз редактировалось mr_smit, 09.09.2015 в 08:59.
Ответить с цитированием
  #6 (permalink)  
Старый 09.09.2015, 08:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

ну тогда только "ручками" не обрамлять булевы значения в кавычки. Кстати, числа тоже можно не обрамлять в кавычки, если только они не являются ключами.
Ответить с цитированием
  #7 (permalink)  
Старый 09.09.2015, 09:07
Аватар для mr_smit
Новичок на форуме
Отправить личное сообщение для mr_smit Посмотреть профиль Найти все сообщения от mr_smit
 
Регистрация: 09.09.2015
Сообщений: 9

Сообщение от laimas Посмотреть сообщение
Кстати, числа тоже можно не обрамлять в кавычки
Я на стороне контроллера делаю все расчеты и там же перевожу число в строку. И уже как строку подставляю в JSON.


Кажется я понял. Параметр "checked" может быть либо 0 либо 1. Любое число не равное 0 воспринимается как 1. Любая строка соответственно тоже воспринимается как 1. Поэтому у меня переключатели и переходят при загрузке в состояние ВКЛ!!!

Сейчас попробую без кавычек.
Ответить с цитированием
  #8 (permalink)  
Старый 09.09.2015, 09:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от mr_smit
Параметр "checked" может быть либо 0 либо 1
Вернее задать "вкл/выкл" можно как true/false или 1/0.
Ответить с цитированием
  #9 (permalink)  
Старый 09.09.2015, 09:30
Аватар для mr_smit
Новичок на форуме
Отправить личное сообщение для mr_smit Посмотреть профиль Найти все сообщения от mr_smit
 
Регистрация: 09.09.2015
Сообщений: 9

Без кавычек работает!

laimas, большое спасибо!
Ответить с цитированием
  #10 (permalink)  
Старый 09.09.2015, 21:07
Аватар для mr_smit
Новичок на форуме
Отправить личное сообщение для mr_smit Посмотреть профиль Найти все сообщения от mr_smit
 
Регистрация: 09.09.2015
Сообщений: 9

Вот что получилось на данный момент:
https://youtu.be/BF9UXrN1_Yk
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX - не реагирует на клик! Поясните плз! Фридрих AJAX и COMET 3 23.11.2014 10:54
Как правильно организовать задержку и обнуление Ajax запроса. vuler Общие вопросы Javascript 6 22.10.2014 18:56
Отправака ajax запроса на сервер Chrome jQuery 1 13.10.2014 08:11
Книги по Ajax BaVa Учебные материалы 18 18.08.2013 14:05
AJAX загрузка CSS в IE addam jQuery 0 26.07.2011 08:09