2011-06-27 46 views
1

我们想实现一个创新的UI。我们正在做的事情如下:

  • 当用户点击一个菜单项链接时,$ .get(url)被调用,我们将取出在url中引用的页面的HTML内容。
  • 然后,我们将该内容填充到输出格中,然后在填充之前删除该输出格的任何内容。

这是我们实际正在做的事情的削减版本,但它的目的是说明我目前面临的问题。

实际上,当使用$ .get(url)包含纯HTML的页面时,我没有任何问题。但是,如果使用$ .get(url)获取的页面包含Ext.NET代码,那么我没有返回任何东西。

实际发生的事情是,Ext.NET代码本身调用其他脚本并在DOM中插入元素。这导致了一个问题,因为我的代码执行到之前 Ext.NET有时间插入我试图访问的内容。

因此,一个天真的尝试来解决这个问题将是等到Ext.NET完成填充页面,然后将代码执行返回到回调函数。问题是我该如何做到这一点?有没有更好的方法来实现我想要做的事情,即确保$ .get(url)完全运行它的过程,以便我的输出div正确填充?

我想我可以放弃使用iFrame的路线,但我想避免这种情况,如果可能的话,因为这会增加复杂的界面。

回答

0

您需要使用

async: false, 

所以做这样的电话..

$.ajax({ 
    type: "GET", // Don't need to declare this.. 
    url: 'url.html', 
    async: false, 
    success: function(data) { 
    // Do something with the returned data.. 
    } 
}); 
+0

@ david1dMcLean:不幸的是,这不起作用,即我得到相同的结果。 – DavidS

+0

我还没有使用EXT.net呢..但有没有办法让它等到dom被加载?不知道这是如何工作的,因为你正在调用它的页面已经被加载.. *思考*确定如何在外部页面加载后将变量设置为true ...外部页面上的js加载但不直到变量的值被设置为true。这意味着一切都被加载..你可能需要通过自定义事件实现 - > http://www.truerwords.net/articles/web-tech/custom_events.html - 是旧的,但我相信它仍然有效(没有尝试过新的IE或FF思想)。 –

+0

@ david1dMcLean:谢谢你的输入。我也有这个计划,但我认为我需要走下iframe的路线,而且我已经遇到了可怕的事情。 – DavidS

1

提取由渲染Ext.NET组件生成的HTML应该是可能的,但我想你”会错过另一个重要的方面......附加到每个组件的DOM事件。

您需要的是在原有效载荷PLUS中发送的任何html以及用于生成页面的JavaScript,并且您需要在父页面上执行该JavaScript。只需要引入html就不会给你带来太大的帮助。

如果您在父页面上运行Ext.NET,则可能需要使用任何Container类型上提供的功能进行调查。其基本功能是获取远程页面/ html +脚本并执行该脚本。

以下示例演示。

<ext:Panel runat="server" Title="Example"> 
    <AutoLoad Url="example.html" /> 
</ext:Panel> 

希望这有助于。

+0

感谢Geoffroy,但现在我已经走下了iframe路线,现在这种工作方式,但我会记住你的建议。我不会将它标记为答案,因为我没有尝试过,但我会加倍努力,因为它可能是一个值得探索的途径。 – DavidS

+0

其实这对我想要做的事没有帮助。 – DavidS

相关问题