2015-05-27 3 views
0

У меня есть эти функции, которые позволяют мне получить список на сервере ejabberd.Strophejs получить ответ обратного вызова успеха в реестре

function callback(){ 
alert('hi'); 
} 

function getInfo(){ 

    var iq = $iq({type: 'get'}).c('query', { xmlns: Strophe.NS.ROSTER }); 
    conn.sendIQ(iq, callback); 
} 

Запрос успешный, так как у меня есть предупреждение. Мой вопрос: как я могу обработать ответ с сервера? Я могу видеть на Wireshark следующий ответ:

<body xmlns='http://jabber.org/protocol/httpbind'> 
<iq xmlns='jabber:client' 
from='[email protected]' to='[email protected]/24988088151432746377322003' id='4:sendIQ' 
type='result'><query xmlns='jabber:iq:roster'> 
<item subscription='both' jid='[email protected]'><group>EveryBody</group></item> 
<item subscription='both' jid='[email protected]'><group>EveryBody</group></item> 
<item subscription='both' jid='[email protected]'><group>EveryBody</group></item> 
</query></iq></body> 

Я хотел бы получить список с user1, user2, user3.

Любые советы о том, как получить доступ, по крайней мере, к ответу, например, xhr?

+0

Просьба уточнить ваш вопрос. Не уверен, что вы спрашиваете, как обрабатывать ответ или что-то делать с ним (то есть ... в каком списке вы ищете «Я бы хотел получить список с user1, user2, user3.»?) –

+0

К сожалению, я бы как сначала получить ответ. Я думаю, что после этого я смогу выбрать то, что хочу. – AshBringer

ответ

0

Я изменил функцию обратного вызова, как это:

function callback(iq){ 
    $(iq).find('item').each(function(){ 
      var jid = $(this).attr('jid'); 
      alert(jid); 
    }); 
} 

хорошо работает ..

1

Обновите свою функцию обратного вызова, чтобы включить iq.

function callback(iq) { 
    iq.each(function (o) { 
     if (o.subscription === 'both') { 
      var jid = Strophe.getNodeFromJid(o.jid); 
      //do whatever 
     } else{ 
      //do something else 
     } 
    }) 
} 
+0

Спасибо за ответ. Я связал это, но добавил предупреждение (jid) после var jid = Strophe .. не запускает его? – AshBringer

+0

Я предполагаю, что у вас где-то ошибка. Попробуйте использовать console.log вместо предупреждения или обернуть пробку/catch и предупредить об ошибке. –

+0

У вас отсутствует точка с запятой. Хотя этот код не работает – AshBringer

Смежные вопросы