asp.net response.redirect命中url,但没有更改浏览器页面

时间:2015-05-11 05:44:39

标签: c# jquery asp.net response.redirect

我有一个从jQuery Post方法(工作正常)调用的aspx页面(webforms),但是后面的代码中的Response.Redirect方法不会使用重定向的URL重新加载浏览器。但它实际上确实击中了URL。 我很确定这与从jQuery调用的页面有关,但不确定为什么会出现这种情况。

return

我逐步完成代码并且product_link正在运行(手动剪切并粘贴到浏览器中),并且正在调用远程页面(我正在测试与另一个具有日志记录的站点的链接)。 但是浏览器没有打开(试过FF,IE,Opera,Chrome)新的URL。

jQuery帖子:

protected void Page_Load(object sender, System.EventArgs e)
{
    if (!Page.IsPostBack)
    {
        //lid = Validation.StripToGUID(ObjToGUID(Request.QueryString("lid")))
        lid = Validation.StripToGUID(ObjToGUID(Request.Form["lid"]));
        string sid = null;
        if (lid.Length == 36)
        {
            //retrieve the link (and product data) from the database
            LiveItem_Data.DBConnStr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            LiveItem o = new LiveItem();
            o = LiveItem_Data.GetLive_ItemFromLID(lid);


            if (HTTPStuff.RemoteFileExists(o.product_link))
            {
                Response.Redirect(o.product_link, true);
            }
            else
            {
                //generate an error                 
            }


        }

    }
}

我确认在IIS Express中启用了HTTPredirect功能(来自Visual Studio 2012)。难倒!

2 个答案:

答案 0 :(得分:1)

我认为从jquery函数来看,它不会从服务器重定向页面,你必须在客户端本身这样做,即点击功能的成功部分

$('.popInfoHG').click(function () {
    var ListID = $(this).parent().find('[id*=hidlid]').val();
    $.post("redir.aspx", { lid: ListID }).success(function() {

//write the redirection code here

});
});

答案 1 :(得分:0)

我不认为你正在使用帖子权利。 Post用于进行隐藏服务调用,不会影响浏览器窗口。

如果您只想重定向浏览器窗口,并且redir.aspx将接受GET或POST,您可以使用window.location.href:

$('.popInfoHG').click(function () {
    var ListID = $(this).parent().find('[id*=hidlid]').val();
    window.location.href = "redir.aspx?lid=" + ListID;
});

如果redir.aspx不接受GET,我建议您在页面上创建一个隐藏的表单(带有隐藏的输入元素)并以编程方式发布。