我有一个想法让一些非常甜蜜的东西,但我不确定它是否可能。这是一个非常基本的ajax函数示例,我可以用它来建立服务器的连接......
function getFakePage(userId)
{
var ajaxObject, path, params;
ajaxObject = getAjaxObject();
params = "?userId=" + userId
path = getInternalPath() + "someServlet" + params;
ajaxObject.open("GET", path, true);
ajaxObject.send();
// On ready state change stuff here
}
所以我想说我有这样的网址......
https://localhost:8443/Instride/user/1/admin
我想使用javascript将用户重定向到此URL。通常我会这样做......
window.location = "https://localhost:8443/Instride/user/1/admin";
但我的想法是创建一个javascript (没有js框架)函数,它可以将ajax
代码与window.location
代码结合起来。基本上我想要完成的是通过ajax与服务器建立连接,在该服务器上发送一个servlet,我希望用户被重定向到该URL,然后将用户重定向到该URL。因此,无论用户多长时间连接到我的服务器,无论他们身在何处,都会看到加载图标而不是空白页。
所以要明确我想要完成的事情;我不想把window.location放在我的ajax函数的成功之内(因为那将包含两次往返),我不想为请求的资源返回大量的HTML并将其添加到页面中。我想用ajax建立与服务器的连接,向用户想要去的URL发送一个servlet,然后以某种方式覆盖ajax函数来重定向该用户。这可能吗?
而且我知道你们中的一些人可能会觉得这很愚蠢,但是当你谈到海外用户盯着白页的拨号连接速度慢时,就不会这样了。如果有可能,我很乐意听到一些见解。非常感谢你!
答案 0 :(得分:0)
您无法在一个中执行AJAX请求和位置更改。如果您只想做一个请求,则必须选择其中一种方法。即。返回一些数据并替换当前页面上的内容,或者加载一个全新的页面。
想要两者兼顾没有任何意义。您可能想要的是有状态网址;您的URL与显示的内容匹配的位置,即使该内容来自AJAX请求。在这种情况下,一个简单的解决方案是使用URL的#
部分,您可以自由更改(window.location.hash
)。一些现代浏览器支持更改整个URL而不会导致页面重新加载。我自己使用#
取得了巨大的成功。
答案 1 :(得分:0)
首先,我要说最好的解决办法是找出导致缓慢和修复的原因。
现在关于你的问题,是的,你可以做到。你甚至可以把它变成现有的应用程序。但它不会很漂亮。它伴随着它自己的一系列问题。但是以下是步骤:
话虽如此,最好只使用加载图标快速加载新页面,同时通过ajax完成任何繁重的任务。