>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Помогите вызвать переданную ранее в класс функцию http://forum.mozilla-russia.org/viewtopic.php?id=52688 |
futureFAvorit32 > 05-12-2011 01:50:35 |
Скрипт реализует паузу в выполнении посредством 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(); |
Shutnik > 05-12-2011 11:22:06 |
по-моему на вид в коде всё корректно. в консоли ошибок что-то пишется? |
hydrolizer > 05-12-2011 11:44:43 |
futureFAvorit32 не хватает this - т.е. должно быть И вызывать нужно тоже через ссылку на this. |
futureFAvorit32 > 06-12-2011 02:02:31 |
Разрабатываю на FireFox (и JS) не так давно, всех инструментов не знаю. И то-же семое. наверное код: заменю на: и будет так жить 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); } } } |