新建了 .ashx 页面,然后在里面用  context.Response.Redirect ,发现页面上没有反应。用Firedebug 查看,转向的页面还确实被执行了,响应也正常,没有报错。该怎么解决?MSDN的解决方案试了,仍然没有效果。谢谢。

解决方案 »

  1.   

    最好在.aspx内执行需要跳转的代码。
      

  2.   

    怎么还到hanler中去处理了啊。。你如果在AJAX中提交过去了AJAX。。成功success里去跳转啊如果有好几种情况。。你也可以返回一个值在success中去判断该跳哪去啊。。
      

  3.   

    正常情况下是不会的在你的配置文件中 搜索 .ashx
      

  4.   

    ashx中用context.Response.Redirect没问题.看看你转向的页面代码有什么问题吧.
    或者换一个浏览器看看. 
      

  5.   

    贴出代码,查看context.Response.Redirect("");
    跳转到路径是否正确
      

  6.   

    仍然不行,下面贴出测试全部代码,望各路大神给予指点,谢谢!1. Ajax_Handler_Redirect.aspx <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(function () {
                $("#ceshi").click(function () {
                    $.ajax({
                        type: "POST",
                        url: "Handler1.ashx",
                        data: "id=1",
                        error: function () {
                            alert("异常错误");
                        }
                    });
                });
            });
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <a id="ceshi">测试</a>
        </div>
        </form>
    </body>
    </html>2. Handler1.ashxnamespace TestOne
    {
        /// <summary>
        /// Handler1 的摘要说明
        /// </summary>
        public class Handler1 : IHttpHandler
        {        public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                context.Response.Redirect("Ajax_Handler_Redirect_Result.aspx?id="+context.Request.Form["id"]);
            }        public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }3.Ajax_Handler_Redirect_Result.aspx ,只是新建了一个页面,在后台 Response.Write(Request.Form["id"]); 而已。我在 Ajax_Handler_Redirect_Result 后台设置断点,确实执行了,但是页面就是没有反应。请大家指点下,不知道错哪儿了,谢谢!!!
      

  7.   

    不在返回之后的 success 中写,是因为路径是后台路径,不想被人查看到。
      

  8.   

    data: "id=1",=>data: "id=1",
                        success:function(d){
                            alert(d);
                        },
      

  9.   

    3.Ajax_Handler_Redirect_Result.aspx ,只是新建了一个页面,在后台 Response.Write(Request.Form["id"]); 而已。
    ---------------------------------------------------------------------------Response.Write(Request.Form["id"]);=> Response.Write(Request.QueryString["id"]);
            Response.End();
      

  10.   

    噢,上面写错了,是 QueryString 。不过仍然不行啊非哥,alert 成功了,弹出 1 ,但是页面仍然没有反应。你测试了吗?
      

  11.   


    页面没有跳转到  Ajax_Handler_Redirect_Result.aspx 
      

  12.   

    因为你是使用的异步请求的方式,页面自然不会跳转如果你只是希望页面跳转,那不必一定使用 ajax
      

  13.   

    啊。这样啊。我要做的功能很简单,就是把账号密码传给 ashx ,判断是否正确,如果正确,就直接跳转进后台。想用 ajax 来做,用户体验好一些。但是如果用 success 来跳转,后台路径就暴露了。非哥有没有好的建议?
      

  14.   


    success:function(d){
                            alert(d);
                        },=>success:function(d){
                            eval(d);
                        },
      

  15.   


    context.Response.Redirect("Ajax_Handler_Redirect_Result.aspx?id="+context.Request.Form["id"]);
            
    =>if(error)
    {
    context.Response("alert('用户名或密码错误!')");
            
    }
    else
    {
    context.Response("location.href='指定链接';");}
      

  16.   

    你是不是在Response.End();后面执行得跳转路径啊,应该在之前的
      

  17.   

    呵呵,非哥貌似写错了,是context.Response.Write("location.href='指定链接';"); 吧~成功了已经。原来还可以这样写。谢谢非哥! 结贴先。不过上面为什么要改成  eval() 呢?
      

  18.   

      $(document).ready(function () {
                $("#ceshi").click(function () {
                    $("#ceshi").attr("href","CheckUser.aspx");
                })
            });为什么要经过 ashx 页面   ?  这样写不更简单些 
      

  19.   

    首先,感觉这个很另类!至于没有跳转,你要先确定是否执行了,如果确定执行了,你可以换个路:将要跳转的地址传给调用页面(context.Response.Write("页面地址");),让调用页面去执行跳转
      

  20.   

    哎呀我晕了。 eval 是执行吧。。执行location.href=....郁闷郁闷。
      

  21.   


    恩,使用 eval 就是要执行 返回的js 代码或者使用 jsonp 的方式 ,道理是一样的