1

我正在尝试执行以下操作: - 通过 JQuery 调用处理程序上的函数, - 处理完成后,重定向到页面。

问题是页面似乎没有加载。

为了清楚起见,我制作了以下代码。

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication3._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript" src="js/jquery-ui.js"></script>
<script type="text/javascript" src="js/jquery.js""></script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
  <script type="text/javascript" language="javascript">
function CallHandler() {
      console.info("Entering CallHandler");
      $.ajax({
          type: 'POST',
          url: "Handlers/MyFunction.ashx",
          data: { helloworld: 'hello world'},
          success: function (data) {
              console.info(data);
              }
          });
      }

    </script>
<asp:HyperLink runat="server" ID="linkForTest" onclick='CallHandler();' Text='Click Me'     />            
</asp:Content>

我的处理程序如下:

/// <summary>
/// Summary description for MyFunction
/// </summary>
public class MyFunction : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write(context.Request["HelloWorld"]);
        context.Response.Redirect("~/Login/WebForm1.aspx");
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

它应该调用我的页面“Login/Webform1.aspx”,但它什么也没调用。但是,Firebug 似乎没有发现问题......只是它一直在尝试加载页面......并且失败了。

有任何想法吗 ?

4

5 回答 5

1

我很确定响应 ajax 请求的重定向不会重定向主机页面。有几种方法可以处理这个问题。一种方法是您可以执行客户端重定向以响应来自处理程序的某种通知或状态代码。

于 2012-04-18T23:16:38.270 回答
0

您正在传递处理程序helloworld并读取它,HelloWorld看看这是否是空引用错误?此外,在 $.ajax 调用上使用错误处理程序并查看它是否被抛出。

  console.info("Entering CallHandler");
  $.ajax({
      type: 'POST',
      url: "Handlers/MyFunction.ashx",
      data: { HelloWorld: 'hello world'},
      success: function (data) {
          console.info(data);
          },
      error: function (data) {
          console.error(data);
          }
      });
  }
于 2012-04-18T12:29:33.460 回答
0

重定向时,您要重定向的页面内容将作为 ajax 结果传递。

于 2014-02-13T01:37:07.130 回答
0

它在循环吗?

即使它在页面上重定向到它,它是否也会重定向?

也许您需要在重定向之前检查 context.Request.Url

于 2012-04-18T12:26:25.987 回答
0

您可以使用javascript通过客户端调用另一种方式调用response.redirect

console.info("Entering CallHandler");
  $.ajax({
      type: 'POST',
      url: "Handlers/MyFunction.ashx",
      data: { HelloWorld: 'hello world'},
      success: function (data) {
                   window.location.href ="WebForm1.aspx"  ;
          },
      error: function (data) {
          console.error(data);
          }
      });
  }

于 2018-07-03T07:53:48.553 回答