Response.Redirect不重定向页面

时间:2015-05-04 05:24:48

标签: asp.net

  $('#logout').on('click', function () {
    console.log("clicked");
    $.ajax({
        type:"GET",
        url: 'Home.aspx?method=simple'
        }).done(function (data) {
        console.log(data);
    });
    //PageMethods.simple();
});

 public void simple()
    {
        Response.Clear();
        Home h = new Home();
        //h.logout();

        Response.Write("some string");
        Response.End();
    }
    public void logout()
    {
        Response.Redirect(Config.Value("logout"));
    }

    <add key="logout" value="http://localhost:52232/Account/Social" />

当我从客户端调用服务器端方法时,它返回整个页面而不是重定向请帮助我 谢谢

2 个答案:

答案 0 :(得分:1)

您的退出方法必须是静态的。

[WebMethod]
public static void logout()
{
    Response.Redirect(Config.Value("logout"));
}

在jQuery AJAX调用中调用logout方法而不是simple

$('#logout').on('click', function () {
console.log("clicked");
$.ajax({
    type:"GET",
    url: 'Home.aspx/logout'
    }).done(function (data) {
    console.log(data);
});
//PageMethods.simple();
});

另一种方法是使用window.location重定向客户端的最终用户。

$('#logout').on('click', function () {
    window.location = "http://localhost:52232/Account/Social";
});

答案 1 :(得分:0)

此Ajax调用从服务器端返回一个值。如果要重定向页面,则需要指定它。

$(document).ready(function () {
            $('#logout').on('click', function () {
                console.log("clicked");
                $.ajax({
                    type: "POST",
                    url: 'Home.aspx?method=simple'
                }).done(function (data) {
                    window.location = data;
                });

            });
        });

背后的代码

protected void Page_Load(object sender, EventArgs e)
{
  if (!String.IsNullOrEmpty(Request.QueryString["method"]))
  {
    if (Request.QueryString["method"].Equals("simple"))
    {
      Response.Write(ConfigurationManager.AppSettings["logout"]);
      Response.End();
    }
  }
}

或使用网络方法

[WebMethod]
public static string logout()
{
    return Config.Value("logout"));
}

然后ajax url更改为url:'Home.aspx / logout'