避免ajax重定向

时间:2013-03-21 13:25:34

标签: jquery ajax redirect asp-classic

感谢您抽出宝贵时间帮助我。

即使我确定不能成为第一个遇到这个问题的人,但到目前为止我找不到任何好的答案,所以就这样了。

假设我有两个ASP(经典)页面。

Target1.asp ,使用response.redirect(网址)重定向到 Target2.asp

现在,我必须使用异步方法获取Target1.asp,您可能已经发现我正在使用 AJAX 这样做。

问题是当我使用 $ .ajax('method':'GET',[...])或只是 $。get('Target1.asp')并且'完整'回调填充带有响应内容的div,它将整个页面重定向到Target2.asp而不是填充div。

原因很简单:div确实充满了Target1.asp的内容。浏览器仍然需要重定向,因为div根本不像iframe,整个页面都会被重定向。

我几乎可以肯定你无法直接从javascript(?)控制重定向。

有没有办法在不使用iframe的情况下处理这个问题?

这就是我想要做的: 使用ajax请求Target1.asp和GET方法,处理重定向(或类似的东西),以便ajax请求Target2.asp然后用最终结果填充div。

谢谢。

早期编辑:如果你需要一个编码的例子,我可以写一个。

3 个答案:

答案 0 :(得分:1)

是的,

使用server.execute(url)server.transfer(URL)替换response.redirect(网址) 这将控制服务器上的导航,而不是让浏览器重定向 Here are the differences(在.NET中,但它是相同的IIS对象,因此经典ASP也是如此)

HTH,

埃里克

答案 1 :(得分:1)

你应该小心在你的问题标题中注意到你正在使用jQuery。虽然,是的,您正在调用Ajax方法,但您不是手动执行,而是依赖于您正在使用的库可能明确的功能。

简短的回答是,没有你可能无法阻止重定向透明地发生,因为这通常是由浏览器本身自动完成的。更长的答案是你应该尝试做一些事情来检查你从ajax响应中获得的数据,看看它是否符合你的预期。当然,如果您有任何机制可以使用您正在获取的数据或者您对服务器端响应有任何控制权,那么这可能非常依赖。

以下关于stackoverflow的文章更详细:

How to prevent ajax requests to follow redirects using jQuery

答案 2 :(得分:0)

你有一个满意的答案,但你可能也想尝试

myurl = "http://(a full external url)" 
set xmlhttp = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0") 
xmlhttp.open "GET", myurl, false 
xmlhttp.send "" 
Response.write xmlhttp.responseText 
set xmlhttp = nothing 

这就是我通过运行asp页面并包含输出的含义,这与包含文件语句略有不同