Показать сообщение отдельно
  #1 (permalink)  
Старый 26.02.2018, 11:07
Новичок на форуме
Отправить личное сообщение для Sochirom Посмотреть профиль Найти все сообщения от Sochirom
 
Регистрация: 21.01.2018
Сообщений: 8

Ajax разсинхронизация.
День добрый. Имею такой код ajax для управления нагрузками на микроконтроллере.

На стороне сервера все просто получили значение выхода записали в порт, затем прочитали из порта отправили в Ajax подтвердили включение.

Засада в том что в браузере происходит следующие, нажали checkbox он становиться checked, туже AJAX меняет его на unchecked потом приходит состояние полученное с микроконтроллера и он опять переходит в checked. Происходит такое мигание перед включением.
Опрос Ajax 1сек.

Как сделать проверку в Ajax, что уже можно менять данные, чтобы это не происходило по воле божией...

Сама статья https://startingelectronics.org/arti...n-LED-control/

код.....
<script>
strLED1 = "";
function GetArduinoIO()
{
nocache = "&nocache=" + Math.random() * 1000000;
var request = new XMLHttpRequest();
request.onreadystatechange = function()
{
if (this.readyState == 4) {
if (this.status == 200) {
if (this.responseXML != null) {

var count;

if (this.responseXML.getElementsByTagName('LED')
[0].childNodes[0].nodeValue === "checked") {
document.LED_form.LED1.checked = true;
}
else {
document.LED_form.LED1.checked = false;
}
}
}
}
}
request.open("GET", "ajax_inputs" + strLED1 + nocache, true);
request.send(null);
setTimeout('GetArduinoIO()', 1000);
strLED1 = "";
}

function GetCheck()
{
if (LED_form.LED1.checked) {
strLED1 = "&LED1=1";
}
else {
strLED1 = "&LED1=0";
}
}

тут checkbox в html
<input type="checkbox" name="LED1" value="0" onclick="GetCheck()" />LED 1 (D6)<br /><br />
Ответить с цитированием