Скрипт реализует паузу в выполнении посредством AJAX-запроса. После паузы (выполнения Ajax-запроса) должна вызываться переданная функция "AutomatBar_Callback.CheckCompleate", но её вызвать у меня не хватает ума и/или опыта. Помогите если не сложно.
var AutomatBar_Ajax = { httpRequest: null, OnRecive: null, Send: function (ActiveUrl, Message, OnReciveProc) { OnRecive = OnReciveProc; // может здесь неправильное присвоение ? if (window.XMLHttpRequest) { // Mozilla, Safari, ... httpRequest = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE try { httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!httpRequest) { alert('Giving up :( Cannot create an XMLHTTP instance'); return false; } httpRequest.onreadystatechange = this.alertContents; httpRequest.open('POST', ActiveUrl); httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); httpRequest.send(Message); return true; }, alertContents: function () { if (httpRequest.readyState === 4) { if (httpRequest.status === 200) { alert('AutomatBar_Ajax.alertContents - yes'); // alert показывает this.OnRecive(httpRequest.responseText); // <-- никак немогу вызвать !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! /* нерабочие попытки: OnRecive(httpRequest.responseText); this.OnRecive.OnRecive(httpRequest.responseText); OnRecive.OnRecive(httpRequest.responseText); */ } } } }; var AutomatBar_Tools = { /* * Пауза на заданное колличество секунд */ Sleep: function (secs, OnReciveProc) { return AutomatBar_Ajax.Send('http://localhost:5080/tools/', 'sleep=' + secs, OnReciveProc); } }; var AutomatBar_Callback = { CheckCompleate: function(responseText){ // не могу вызвать функцию alert('jhghjgjh'); }, Start: function(){ AutomatBar_Tools.Sleep(5, this.CheckCompleate); } }; AutomatBar_Callback.Start();
Если бы у людей были крылья, они бы... улетали на зиму в тёплые края.
Отсутствует
futureFAvorit32
Перед присваиванием в 5-й строчке кода:
не хватает this - т.е. должно быть
И вызывать нужно тоже через ссылку на this.
Отредактировано hydrolizer (05-12-2011 11:45:29)
Отсутствует
Разрабатываю на FireFox (и JS) не так давно, всех инструментов не знаю.
консоли ошибок пишет только это:
Ошибка: ошибка синтаксиса
Источник: http://localhost:5080/tools/
Строка 1, символ 1
Исходный код:
ok
Веб-консоль тоже кроме Аякс-запроса ничего не показывает.
изменил код в соответствии с:
И то-же семое.
наверное код:
заменю на:
и будет так жить
Добавлено 06-12-2011 02:20:14
Нашёл глюк:
alertContents: function () { if (httpRequest.readyState === 4) { if (httpRequest.status === 200) { alert('AutomatBar_Ajax.alertContents - yes'); // alert показывает OnRecive('hhh'); // - работает // OnRecive(httpRequest.responseText); // - не работатет, почему?????? } } }
JS полон сюрпризов
Добавлено 06-12-2011 02:23:31
Всё... ПАШЕТ!!!!!
alertContents: function () { if (httpRequest.readyState === 4) { if (httpRequest.status === 200) { var m = httpRequest.responseText; OnRecive(m); } } }
Отредактировано futureFAvorit32 (06-12-2011 02:23:31)
Если бы у людей были крылья, они бы... улетали на зиму в тёплые края.
Отсутствует