Strophejs得到名单成功的回调回应

时间:2015-05-27 18:04:44

标签: javascript xmpp ejabberd strophe

我有这些功能,可以让我在ejabberd服务器上获取名单。

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='azerty@localhost' to='azerty@localhost/24988088151432746377322003' id='4:sendIQ'
type='result'><query xmlns='jabber:iq:roster'>
<item subscription='both' jid='user1@localhost'><group>EveryBody</group></item>
<item subscription='both' jid='user2@localhost'><group>EveryBody</group></item>
<item subscription='both' jid='user2@localhost'><group>EveryBody</group></item>
</query></iq></body>

我想获得一个包含user1,user2,user3的列表。

关于如何至少访问像xhr这样的响应的任何建议?

2 个答案:

答案 0 :(得分: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
        }
    })
}

答案 1 :(得分:0)

我已经改变了这样的回调函数:

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

效果很好..