如何在不重新加载网页的情况下重新加载Ajax调用参数

时间:2010-06-14 21:47:13

标签: ajax extjs alfresco

我正在使用Extres 2.2.1与Alfresco 3.2企业合作。

我想更新在登录期间加载的组件上对露天服务器进行身份验证的故障单。此票证在一段时间后到期,这就是我需要更新票证的原因。

对我来说似乎不可行的选项(但如果我错了请告诉我):

  1. 重新加载组件以重新加载调用参数 - 我不能这样做,因为它会重置用户之前正在处理的任何内容(即,树面板重新加载,网格过滤器重置等)。实际的网页永远不会重新加载,因为所有内容都使用ajax调用来更新页面上的内容。

  2. 创建一个存储票证的全局变量,并将其作为调用参数附加到任何ajax调用 - 在登录期间加载的任何组件仍将使用原始票证来调用服务器。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情

Ext.onReady(function() {
  var token = new Ext.util.MixedCollection();
  token.add('id', 'THE_TOKEN_ID');
  Ext.ComponentMgr.register('token', token);
});

将事件侦听器附加到MixedCollection,以更新任何关心令牌的组件。

// now you need all the event listeners
var token = Ext.getCmp('token');
var component = Ext.getCmp('some_component_that_needs_ajax');
token.on('replace', function(key, value, original) {
  if(key == 'id') {
    component.params.token_id = value; // update the new value
  }
});

每当令牌需要更新时,请执行

var token = Ext.getCmp('token');
token.replace('id', 'THE_NEW_TOKEN_ID');

这里发生了什么:

  1. 您创建MixedCollection以包含有关令牌的信息。
  2. 有新标记时需要更新的任何组件都应在令牌replace的{​​{1}}侦听器的处理程序中更新。
  3. 当您获得新的令牌ID时,请使用MixedCollection更新带有新令牌ID的MixedCollection.replace密钥。
  4. 将触发id处理程序,以及更新所有相关组件的侦听器。