Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с кодом, выборка инфы из XML 
:(
    Опции темы
Reptor
Дата 6.9.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



 Я понимаю что тут делается но всеровно как мне вывести этот XML который тут возращается.
Если можно подскажите де и в какой строчке мне поставить алерт что б вывести результат работы скрипта который прописан в переменной umaxUri: 


Код

const umaxObserver = {
  
  /**
   * Catchs any action
   *
   * @return void
   */
  observe: function(aSubject, aTopic, aData) {

    switch(aTopic){
      
      // timer event
      case "timer-callback":
        umaxTalk.getData();
      break;
      
      // umaxstats event
      case "umaxstats-status":
        switch(aData) {
          // settings was updated
          case "settings-changed":
            umaxTalk.getData();
            
            // update timer
            umaxTalk.timer.cancel();
            delay = umaxTalk.pref().getIntPref("umaxstats.update.freq");
            umaxTalk.timer.init(umaxObserver, delay, umaxTalk.timer.TYPE_REPEATING_SLACK);
          break;  
        }
      break;
    }
    
    
  }
}

/**
 * Main operation class
 */
const umaxTalk = {
  
  /**
   * XML HTTP Request object
   *
   * @var xmlhttprequest object
   */
  request:             null,
  
  /**
   * Umaxlogin stats URI
   *
   * @var string
   */
  umaxUri:             "http://anton1.limbo/apf/exec/pr.php", 
  //umaxUri:             "http://localhost/umax/p", 
  
  /**
   * tooltip store variable
   *
   * @var DOMElement 
   */
  tooltipDOM:          null,
  
  /**
   * statusbarpanel store variable
   *
   * @var DOMElement
   */
  statusbarpanelDOM:   null,
  
  /**
   * Timer object
   *
   * @var nsITimer
   */
  timer:               null,
  
  /**
   * Performs actions for retrieving data from umaxlogin
   *
   * @return void
   */
  getData: function() {
    
    alert("ssss");
    
    try {
      umaxId  = umaxTalk.pref().getIntPref("umaxstats.userid");
      //statURL = umaxTalk.umaxUri + String(umaxId);
 statURL = umaxTalk.umaxUri;
      umaxTalk.request.open("GET", statURL, true);
      umaxTalk.request.onerror = umaxTalk.requestOnerror;
      umaxTalk.request.onload =  umaxTalk.requestOnload;  
            
      umaxTalk.request.setRequestHeader("Cache-Control", "no-cache");
      umaxTalk.request.setRequestHeader("User-Agent",    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
      
      umaxTalk.request.send(null);
    }
    catch(e) {
      umaxTalk.removeTooltip();
      umaxTalk.messageTooltip("Not connected!");  
    }
  },  
  
  /**
   * Return preference service object
   *
   * @return nsIPrefBranch
   */
  pref: function() {
    return Components.classes["@mozilla.org/preferences-service;1"]
        .getService(Components.interfaces.nsIPrefBranch);
  },
  
  /**
   * Checks request status
   *
   * @return false
   */
  checkNowCallback: function() {
    if(umaxTalk.request.status == 200) {
      try {
        // umax login do not send xml header
        // so we make XML with DOM
        var objDOMParser = new DOMParser();
        var objXML = objDOMParser.parseFromString(this.request.responseText, "text/xml");
        
        umaxTalk.statTooltip();
        
        umaxTalk.parseDOM(objXML);  
        umaxTalk.updateStatusBar();  

      } 
      catch(e) {
        umaxTalk.removeTooltip();
        dump(e);
        umaxTalk.messageTooltip("Invalid data from umaxlogin.com!");  
      }

    } 
    else {
      umaxTalk.removeTooltip();
      umaxTalk.messageTooltip("Invalid response from umaxlogin.com!");  
    }
  },
  
  /**
   * Parses XML data
   *
   * @return void
   */
  parseDOM: function(objXML) {
    
    alert(objXML."ffff"); // тут у меня ничего не выводится
    
    dateStr     = objXML.getElementsByTagName("p")[0].childNodes[0].nodeValue;
    dateArr     = dateStr.match(/([0-9]{4}).([0-9]{2}).([0-9]{2})/);
    this.date   = String(dateArr[3] + '/' + dateArr[2] + '/' + dateArr[1]);
    
    timeStr     = objXML.getElementsByTagName("p")[0].childNodes[2].nodeValue;
    timeArr     = timeStr.match(/[0-9]{1,2}:[0-9]{1,2}/);
    this.time   = String(timeArr[0]);
    
    topStr      = objXML.getElementsByTagName("p")[0].childNodes[4].nodeValue;
    topArr      = topStr.match(/[0-9]+/);
    this.top    = String(topArr[0]);
    
    this.todaySrchs  = objXML.getElementsByTagName("td")[1].firstChild.nodeValue;
    this.todayClcks  = objXML.getElementsByTagName("td")[3].firstChild.nodeValue;
    this.todayEarn   = objXML.getElementsByTagName("td")[5].firstChild.nodeValue;
    
    this.ydaySrchs   = objXML.getElementsByTagName("td")[7].firstChild.nodeValue;
    this.ydayClcks   = objXML.getElementsByTagName("td")[9].firstChild.nodeValue;
    this.ydayEarn    = objXML.getElementsByTagName("td")[11].firstChild.nodeValue;
    
    this.perSrchs    = objXML.getElementsByTagName("td")[13].firstChild.nodeValue;
    this.perClcks    = objXML.getElementsByTagName("td")[15].firstChild.nodeValue;
    this.perEarn     = objXML.getElementsByTagName("td")[17].firstChild.nodeValue;    
    
  },
  
  /**
   * Updates umaxstats statusbar overlay
   *
   * @return void
   */
  updateStatusBar: function() {
    
    document.getElementById("umaxstats-date").value               = this.date;
    document.getElementById("umaxstats-today-time").value         = this.time;
    
    document.getElementById("umaxstats-today-searches").value     = this.todaySrchs;
    document.getElementById("umaxstats-today-clicks").value       = this.todayClcks;
    document.getElementById("umaxstats-today-earn").value         = this.todayEarn;
    
    document.getElementById("umaxstats-yday-searches").value      = this.ydaySrchs;
    document.getElementById("umaxstats-yday-clicks").value        = this.ydayClcks;
    document.getElementById("umaxstats-yday-earn").value          = this.ydayEarn;    
    
    document.getElementById("umaxstats-period-searches").value    = this.perSrchs;
    document.getElementById("umaxstats-period-clicks").value      = this.perClcks;
    document.getElementById("umaxstats-period-earn").value        = this.perEarn;     
    
    umaxTalk.setStatusBarText();
    
    
    
  },
  
  setStatusBarText: function() {
    
    var sbValue     = '';
    var sbValueType = umaxTalk.pref().getIntPref("umaxstats.sb.value.type");
    
    switch (sbValueType) {
      case 1: // Position in top
        sbValue = this.top;
      break;
      case 2: // Today's Searches/Clicks/Income
        sbValue = this.todaySrchs + '/' + this.todayClcks + '/' + this.todayEarn;
      break;
      case 3: // Only today's searches
        sbValue = this.todaySrchs;
      break;
      case 4: // Only today's clicks
        sbValue = this.todayClcks;
      break;
      case 5: // Only today's income
        sbValue = this.todayEarn;
      break;
    }
    document.getElementById("umaxstats-top").value = sbValue;
    
    if (1 != sbValueType) {
      document.getElementById("top-today").value = 'Today (' + this.top + ')';
    }
    else {
      document.getElementById("top-today").value = 'Today';
    }
    
  },
  
  /**
   * Removes current tooltip from XUL statusbarpanel element
   *
   * @return void
   */
  removeTooltip: function() {
    umaxTalk.statusbarpanelDOM.removeChild(document.getElementById("umaxstats-tooltip"));
  },
  
  /**
   * Appends statistic tooltip to XUL statusbarpanel element
   *
   * @return void
   */  
  statTooltip: function() {
    umaxTalk.removeTooltip();
    umaxTalk.statusbarpanelDOM.appendChild(umaxTalk.tooltipDOM);
  },   
  
  /**
   * Appends message tooltip to XUL statusbarpanel element
   *
   * @return void
   */
  messageTooltip: function(message) {
    document.getElementById("umaxstats-top").value = 'n/a';
    
    tooltip = document.createElement("tooltip");
    tooltip.setAttribute("id",         "umaxstats-tooltip");
    tooltip.setAttribute("noautohide", "true");
    tooltip.setAttribute("orient",     "horizontal"); 
    
    label = document.createElement("label");
    label.setAttribute("value", String(message));
    tooltip.appendChild(label);

    statusbarpanel = document.getElementById("umaxstats-status");
    statusbarpanel.appendChild(tooltip);  
  },  
  
  /**
   * Initiates umaxstats object
   *
   * @return void
   */
  start: function() {
    umaxTalk.tooltipDOM        = document.getElementById("umaxstats-tooltip");
    umaxTalk.statusbarpanelDOM = document.getElementById("umaxstats-status");
    
    umaxTalk.removeTooltip();
    umaxTalk.messageTooltip("Starting update..."); 
    
    
    umaxTalk.request = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
                       .createInstance(Components.interfaces.nsIXMLHttpRequest);
    
    umaxTalk.getData();
    
    delay = umaxTalk.pref().getIntPref("umaxstats.update.freq");
    umaxTalk.timer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer); 
    umaxTalk.timer.init(umaxObserver, delay, umaxTalk.timer.TYPE_REPEATING_SLACK);
    
    Components.classes["@mozilla.org/observer-service;1"]
        .getService(Components.interfaces.nsIObserverService)
        .addObserver(umaxObserver, "umaxstats-status", false);
  },
  
  /**
   * Request's onerror handler
   *
   * @return void
   */
  requestOnerror: function() {
    umaxTalk.removeTooltip();
    umaxTalk.messageTooltip("Not connected!");  
  },
    
  /**
   * Request's onerror handler
   *
   * @return void
   */  
  requestOnload: function() {
    umaxTalk.checkNowCallback();
  },
     
  /**
   * Destroys needed elements
   *
   * @return void
   */
  destroy: function() {
    umaxTalk.timer.cancel();
    Components.classes["@mozilla.org/observer-service;1"]
        .getService(Components.interfaces.nsIObserverService)
        .removeObserver(umaxObserver, "umaxstats-status");
  }
}

try {
  window.addEventListener("load",   umaxTalk.start,   false); 
  window.addEventListener("unload", umaxTalk.destroy, false); 
}
catch(e) {
  dump("Initialization error: " + e);
}

/**
 * Context menu functions
 */

/**
 * Force update the stats
 *
 * @return void
 */
function us_forceUpdate() {
  umaxTalk.getData();
}

/**
 * Opens modal windows (about, settings)
 *
 * @param  string type of the window
 * @return void
 */
function us_openWindow(type){
  switch (type) {
    case 'about':
      openDialog("chrome://umaxstats/content/umaxstatsAbout.xul", "", "chrome,titlebar,toolbar,centerscreen,modal");
    break;
    case 'settings':
      var arguments = new Array(umaxObserver);
      openDialog("chrome://umaxstats/content/umaxstatsSettings.xul", "", "chrome,titlebar,toolbar,centerscreen,modal", arguments);
    break;
  }
}

/**
 * Opens URL on new tab
 *
 * @param  string URL to open
 * @return void
 */
function us_openURL(url) {
  var windowMediatorIID = Components.interfaces.nsIWindowMediator;
  var windowMediator = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(windowMediatorIID);
  var topWin = windowMediator.getMostRecentWindow("navigator:browser");
  
  var browser = topWin.getBrowser();
  var tab = browser.addTab(url);
  browser.selectedTab = tab;  
}

PM MAIL ICQ   Вверх
12345c
Дата 6.9.2006, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Вместо responseText - responseXML, и разбирать скриптом.
PM WWW   Вверх
Reptor
Дата 6.9.2006, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Вроде всё понятно но он мне отдает ошибку 404. Хотя если аналогичный адрес набрать в браузере то всё нормально. В чём может быть проблема?

Добавлено @ 19:09 
а может быть такое что он не выдет мой ресурс? 
PM MAIL ICQ   Вверх
Reptor
Дата 6.9.2006, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



о вроде уже работает всё нормально
PM MAIL ICQ   Вверх
Reptor
Дата 6.9.2006, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



а ещё вопрос вы не знаете какой должен в этом случае выглфдить РНР

Добавлено @ 19:49 
ну который отдает этот XML

Добавлено @ 19:59 
вот мой РНР 
Код

<?php
$xml="
<?xml version=\"1.0\" encoding=\"UTF-8\"?>


<window > sfsfsdf 
     
</window>";

echo $xml;
?>


а вот JS  
 
Код

parseDOM: function(objXML) {
    
    alert(objXML);
    
    var sss     = objXML.getElementsByTagName("window")[0].nodeValue;
    
    alert(sss);
  


что не так? сначала выводит что это [object XMLDocument] и всё и после этого следующий алерт не работает
PM MAIL ICQ   Вверх
12345c
Дата 6.9.2006, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Значит, ошибка дальше. После alert(sss);
PM WWW   Вверх
Reptor
Дата 7.9.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



12345c, да нет ошибок нет все нормально а как только вставляю эту строку то не работает
PM MAIL ICQ   Вверх
Reptor
Дата 7.9.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Может надо как то правильно этот XML распарсить или там объект создать помогите уже всё перепробывал. (да это всё под FireFox)
PM MAIL ICQ   Вверх
Reptor
Дата 7.9.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



и еще вот такой вопрос что это значит совсем не понятно

Код

Components.classes["@mozilla.org/observer-service;1"]
      .getService(Components.interfaces.nsIObserverService)
      .notifyObservers(null, "umaxstats-status", "settings-changed"); //null, "umaxstats-settings-changed", null
}

PM MAIL ICQ   Вверх
Sardar
Дата 8.9.2006, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Reptor @  7.9.2006,  13:55 Найти цитируемый пост)
нет ошибок нет все нормально а как только вставляю эту строку то не работает 

Открой JavaScript консоль в лисе, посмотри текст ошибки.

Цитата(Reptor @  7.9.2006,  18:36 Найти цитируемый пост)
и еще вот такой вопрос что это значит совсем не понятно

Один из XPCOM обьектов, mozilla и подобные only.


M
Sardar
Топик перемешан, старайся делить вопросы по разным топам.



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.