【问题标题】:Javascript not working on response.redirect using ajax ASP.NetJavascript 无法使用 ajax ASP.Net 处理 response.redirect
【发布时间】:2015-08-28 16:04:14
【问题描述】:

我正在将 ASP.Net 页面重定向到下载页面,并且我正在使用 ajax。重定向页面确实有效,文件被下载,调用下载的页面正在显示。我需要在文件下载后调用 javascript 来移除等待屏幕。

我首先调用重定向,然后调用 javascript 来解锁 UI。为了阻止 UI,我正在使用 onclientclick='block()';

  Response.Redirect("ExportFile.aspx, false);
 ScriptManager.RegisterClientScriptBlock((this), this.GetType(), "alertAction", "alert('');unblock();", true);

即使警报不起作用,所以根本不会触发 JS。我厌倦了将代码放在文件下载页面上,但这也不起作用。我什至尝试过 body onpageunload,但它也从来没有触发过。

如何重定向到文件下载页面然后调用JS解除对UI的阻塞?

【问题讨论】:

  • 我不知道,但是如果您将用户重定向,则将整个页面阻塞是不寻常的。
  • 问题是解除阻塞。我正在调用 jquery 块 Ui。将页面变为透明黑色。现在我需要解锁它,但我无法触发任何 JS。

标签: javascript c# asp.net ajax jquery-ui


【解决方案1】:

一旦 response.redirect 发生,其他代码就无法执行。 我建议用 javascript 编写您的重定向代码并将其放入您的 RegisterClientScriptBlock 中。只需确保取消阻止在 window.location 之前即可。

ScriptManager.RegisterClientScriptBlock((this), this.GetType(), "alertAction", "unblock(); window.location.assign('yourPage.aspx');", true);

【讨论】:

  • 我确实尝试过,但确实有效,但是解锁代码首先触发,然后网页开始下载。数据来自 wcf 服务,大约需要 20 秒。因为解锁代码触发了用户在文件准备好之前什么都看不到。
  • 当文件准备好后,你能启动一个javascript函数吗?还是使用自定义事件?然后,您可以使用RegisterClienScriptBlock 函数设置侦听器,一旦文件准备好,它将解锁页面。
  • 我在 WCF 服务获取数据后对导出页面进行了页面加载,但是在数据准备好保存并且没有触发任何 js 后该页面消失了。
【解决方案2】:

boruchsiper 是正确的。此外,一旦你重定向它们,你就在不同的页面上(如果我的假设是正确的,你正在重定向到不同的页面)。您可能希望在到达新页面后触发这一行,因此您希望它在 Load() 函数后面的该页面代码中:

ScriptManager.RegisterClientScriptBlock((this), this.GetType(), "alertAction", "alert('');unblock();", true);

您可能希望在该重定向 URL 中包含一个查询字符串,以告知该页面采取该操作。

【讨论】:

  • 我也试过了,我也把脚本管理器改成了启动脚本。即使 Body=onunload 也不会在导出页面上触发。由于页面 A 重定向到下载文件页面,因此该页面甚至从未见过。出于某种原因下载文件或导出数据,您必须重定向页面
猜你喜欢
  • 2011-08-19
  • 2011-12-26
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
相关资源
最近更新 更多