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 リクエストに応じたリダイレクトは、ホスト ページをリダイレクトしないと確信しています。これを処理するにはいくつかの方法があります。1 つの方法は、ハンドラーからの何らかの通知またはステータス コードに応答して、クライアント側のリダイレクトを行うことです。

于 2012-04-18T23:16:38.270 に答える
0

ループしてる?

リダイレクト先のページにある場合でもリダイレクトされますか?

リダイレクトする前に context.Request.Url を確認する必要があるかもしれません

于 2012-04-18T12:26:25.987 に答える
0

リダイレクトの際、リダイレクトしたいページの内容がajaxの結果として渡されます。

于 2014-02-13T01:37:07.130 に答える
0

ハンドラーを渡してhelloworldHelloWorldnull 参照エラーかどうかを確認していますか? また、$.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 に答える