【问题标题】:Response.redirect does not work with Ajax controlsResponse.redirect 不适用于 Ajax 控件
【发布时间】:2009-07-31 22:51:02
【问题描述】:

我有一个包含多个使用 Ajax 的用户控件的页面。当我尝试从此页面执行 response.redirect 时,Ajax 会捕获调用并且不允许重定向。

如何从 Ajax 页面执行 response.redirect?

谢谢...

【问题讨论】:

标签: ajax response.redirect


【解决方案1】:

您在用户控件中对 AJAX 操作的控制程度如何?如果您可以修改客户端,最简单的做法是返回一个您可以解析的 JSON 对象,并将您想要重定向到的 URL 作为数据发送。在客户端上获取数据后,只需将 window.location.href 设置为 url。

使用 jQuery,它看起来像:

$.ajax({
   url: '/some/url',
   dataType: 'json',
   type: 'post',
   data: $('form').serialize(),
   success: function(data) {
       if (data.Redirect) {
          window.location.href = data.Redirect;
       }
       else {
         ...handle other responses...
       }
   }
   ... more options...
});

【讨论】:

  • 我所有的代码都在 C#、ASP.NET 2.0 中。我不熟悉 JSON。
  • 查看这篇关于使用 JavaScriptSerializer 创建 JSON 的博客文章:blogs.msdn.com/rakkimk/archive/2009/01/30/…。您只需要定义需要发回的对象,然后在序列化版本上使用 Response.Write。
【解决方案2】:

正如我在另一个问题中所说:

将此添加到您的 web.config

<httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多