@snovazabilparol
PHP是世界上最好的编程语言!当之无愧!

Почему не работает код (JavaScript)?

Доброго времени суток.
Тренировался с restApi Telegram, захотелось написать простенький примерчик. Написал, он работал. Потом в какой-то момент, понял что код слишком крив, чтобы оставлять его для всех. Решил переписать, настолько, насколько хватило скиллов и опыта (учу JS на начальном уровне). Однако, к моему удивлению, код не выдал ошибок, но и перестал корректно работать.

Код:
Тот самый сорец
var countdown = 5000;
var tgUrl = 'https://api.telegram.org/bot<authkey>/';
var testDiv = document.querySelectorAll('h1')[0];
var lastCmd = '';
var cMsg = '';

var sTg = {
  cmdL : {
  	red : 'testDiv.style.color="red"',
    reset : 'testDiv.style.color="black"',
    alert : "alert(cmd.result[0].message.text.split(' ')[1])",
    stop : 'clearInterval(iUpdate); cMsg = "Stopped"; sTg.sRespTg(cMsg)'
  },
	sRespTg : function(msg){
    console.log(msg);
    var tgSo = new XMLHttpRequest();
		tgSo.open("GET", tgUrl + 'sendMessage?chat_id=<chatid>&text='+msg, true);
    tgSo.send();
	},
  sReqTg : function(){
    var tgSo = new XMLHttpRequest();
		tgSo.open("GET", tgUrl + 'getUpdates?limit=1&offset=-1', false);
    tgSo.send();
    tgSo.onreadystatechange = function (data) {
    	if (tgSo.readyState == 4) { 
        var respO = JSON.parse(tgSo.responseText);
        if(sTg.kTg(respO)){
        	sTg.cmdTg(respO)
        }
      }
    }
    return false;
	},
  cmdTg : function(cmd){
  try{
  	if(cmd.result[0].message.text.match(/0' + cmd + '/g))
       	eval(sTg.smdL[cmd]);
      } catch(ex){
       clearInterval(iUpdate);
       cMsg = 'Error must be Stopped';
       sTg.sRespTg(cMsg + cmd);
    }
  },
  kTg : function(tgResp){
  try{
     if(tgResp.ok){
			 if(lastCmd == '') lastCmd = '0stop';
       if(tgResp.result[0].message.text == lastCmd)
       return false;
       lastCmd = tgResp.result[0].message.text;
       return true;
     }
     } catch(ex){
     	 sTg.sRespTg('Error: ' + ex.message);
     }
  }
};

var jri = function () {
    console.log("Go");
    try{
    	sTg.sReqTg();
    } catch(ex){
    	alert('Что-то не то');
    }
 };

var iUpdate = setInterval(jri, countdown);
Что делает скрипт? (Для тех, кто спешит)

Скрипт с интервалом в 5 секунд получает ответ с сервера, анализирует его на соответствие простому регулярному выражению, после чего выполняет заданную в значении совпавшего ключа, команду. Также информирует клиента (telegram), отсылая ему сообщение и дублируя в консоли.


Неработоспособность скрипта начинается с получения ответа, который не приходит (скорее всего объект XMLHttpRequest даже не думает инициализироваться.)
Надеюсь на вашу помощь. Прошу дать по возможности развернутый ответ, чтобы я больше не совершал подобных ошибок.
Всем заглянувшим, хорошего кодинга и удачи.

JSFiddle
  • Вопрос задан
  • 209 просмотров
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Открыл консоль на jsfiddle.
Зря вы на XMLHttpRequest ругаетесь, запросы он отправляет, и даже ответы получает. (404, потому что адрес неправильный).

Дальше проверять сложно, потому что остается только догадываться, что он получает при нормальной работе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы