1

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

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

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

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

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

所以解决这个问题的一个天真的尝试是等到 Ext.NET 完成填充页面,然后将代码执行返回给回调函数。问题是我该怎么做?实际上是否有更好的方法来实现我正在尝试做的事情,即确保 $.get(url) 已完全运行其课程,以便正确填充我的输出 div?

我想我可以使用 iFrame,但如果可能的话,我想避免这种情况,因为它会增加已经很复杂的界面的复杂性。

4

2 回答 2

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>

希望这可以帮助。

于 2011-06-28T05:31:51.560 回答
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..
  }
});
于 2011-06-27T10:17:00.257 回答