2015-05-11 27 views
0

我有一个从jQuery Post方法调用的aspx页面(webforms)(它工作正常),但是来自后面的代码的Response.Redirect方法确实不要使用重定向的URL重新加载浏览器。但是,它实际上确实会触发该网址。 我很确定这与jQuery调用的页面有关,但不知道为什么会发生这种行为。asp.net response.redirect命中url,但没有改变浏览器页面

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     
      } 


     } 

    } 
} 

我通过代码加强和product_link工作(手动剪切并粘贴到浏览器),和远程页面被称为(我测试使用具有记录其他网站的链接)。 然而浏览器并未打开(尝试过FF,IE,Opera,Chrome)新的URL。

jQuery的岗位:

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

我核实,HTTPredirect功能在IIS快速打开(从Visual Studio 2012)。难倒!

+0

为什么你为'Response.Redirect(o.product_link,true)保留'true';' –

+0

要结束响应,但false也不起作用。 – MC9000

回答

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 

}); 
}); 
+0

好点。也许我应该把RemoteFileExists方法放在一个web服务中,这个web服务使用lid(listing id)作为参数(它是非常轻量级的/低延迟的方式来确定链接是否有效,无需加载它),返回url和从jQuery重定向。它可能会运行得更快 - 在这种情况下,完全回发并不是真的需要。 – MC9000

+0

确切地说,现在你在正确的轨道 –

+0

没有完整的回传(张贴到重定向页面)的唯一问题是我遇到了可怕的弹出窗口阻止程序问题 - 这会吓跑人们(不幸的是,有没有办法绕过window.open导致弹出窗口拦截器参与)。 我想我只需要在目标为_blank的情况下用href的查询字符串(如http://mysite/redir.aspx?lid = xxxx)使用超链接,然后使用response.redirect。 – MC9000

0

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

如果你只是想重定向浏览器窗口,并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,我建议你在你的页面上创建一个隐藏的表单(带有一个隐藏的输入元素)并以编程方式发布。

+0

同意。我实际上想打开一个新窗口,让旧窗口打开,而不仅仅是原始页面的重定向。我只是使用redir.aspx页面的标准链接,然后,从服务器端,它执行一个response.redirect到新的url(在服务器端记录点击和其他信息以跟踪人口统计数据)。这样,访问者的浏览器中就不会出现一条消息,要求允许弹出窗口(这是所需的)。 – MC9000

相关问题