【问题标题】:Using XMLHttpRequest to display a popup使用 XMLHttpRequest 显示弹出窗口
【发布时间】:2014-01-24 23:16:58
【问题描述】:

我正在编写一个显示项目列表的 ASP.NET 3.5 Web 应用程序。当用户选择一个项目时,我希望能够显示一个带有详细信息的非模态弹出窗口。我希望能够同时显示几个细节弹出窗口。 (即,用户可以单击一个项目以查看其详细信息,然后单击另一个项目以获取另一个弹出窗口。)目前我在回发期间调用 RegisterStartupScript 以在页面重新写入“window.open(...)”脚本时-渲染。当然,问题在于这需要整页回发和刷新。

我突然想到这可能是 XMLHttpRequest 或 AJAX 的完美用途,但我不知道该怎么做(或者这样做是否可行或明智)。谁能给我指路?

我安装了 AJAX 扩展,但我不想使用 AJAX 控制工具包。


编辑: 一些澄清:当用户选择一个项目时,会引发一个自定义事件。在服务器上,我处理这个事件并使用一些服务器端逻辑来构造一个 URL,然后我使用 RegisterStartupScript 来构造一个“window.open(myUrl...)”脚本。但是发回整个页面来执行此操作似乎效率低下,我想知道我是否可以调用一个简单的服务器端函数,该函数构造 url 并将其发送回,而无需往返整个页面。

【问题讨论】:

    标签: asp.net popup xmlhttprequest


    【解决方案1】:

    创建弹出窗口与 AJAX 几乎没有关系,而与 JavaScript 有更多关系。请参阅此处的 jQuery 对话框库。然后你可以使用 jQuery 的 AJAX API 来做你的服务器脏活 :)

    jQuery Dialog UI

    --

    比尔·康拉德
    Devtacular - Web Development Tutorials

    【讨论】:

    • sig 和广告需要去,但这是一个很好的答案
    • 创建弹出窗口不是问题。我想知道的是我是否可以在服务器上处理用户的选择,然后在客户端创建弹出窗口,而无需往返整个页面。
    【解决方案2】:

    您可以使用DHTML Window widget。 它提供了多种方式来显示模态或非模态窗口。 它还支持AJAX。

    您可以使用 dhtmlwindow 打开一个新窗口,或者 dhtmlmodal 打开一个新的模态窗口。

    当然,您可以对其进行编辑以符合您的要求。 示例:

    var insWindow = dhtmlmodal.open("insbox", "iframe","UserMaster.aspx?" + queryStr, "User Master", "width=425px,height=500,center=1,resize=0,scrolling=1", "recal");
    

    【讨论】:

      【解决方案3】:

      您真的需要打开一个新窗口吗?在同一个窗口中打开一个绝对定位的 DIV 或在当前页面的顶部创建一个新图层,这些天来风靡一时。


      编辑:

      我认为这不会限制弹出窗口的数量,现在可以使用 jQuery + jQuery UI 之类的库来完成一些简洁的工作,您可以根据需要简单地创建任意数量的这些 DIV/层,并且使它们可移动、可调整大小等。真正的弹出窗口只有而这些没有的是它们不会出现在选项卡面板/任务栏上。

      是的,您将受到打开主页的窗口大小的限制,但是,我个人并不认为这是一个问题,因为大多数人无论如何都在最大化的浏览器窗口中冲浪。

      老式的典型弹出窗口的实现对您来说无疑要容易得多,但它也会遇到最终用户弹出窗口阻止程序的问题。刚刚在我的工作中遇到了这个问题,出于某种原因,他们需要在证书身份验证过程中弹出一个弹出窗口,并且一旦雅虎发布了新版本的工具栏,它就停止工作了)。

      【讨论】:

      • 这不会限制我一次只能弹出一个详细信息,并将弹出位置限制在主页的边界内吗?
      猜你喜欢
      • 1970-01-01
      • 2022-12-14
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      相关资源
      最近更新 更多