2015-11-15 71 views
0

我一直在使用“window.location.href”很长一段时间没有任何问题。使用location.href缓慢的请求

URL正在调用一个服务器进程,它首先启动转换和下载,通常只需要一两秒钟的时间。但偶尔服务器转换/下载过程可能需要更长的时间。当发生这种情况时,我的用户会看到一个令人讨厌的“超时”消息。

所以,我想,以确定是否有任何方法,可能使用jQuery的魔力,是这样的:

$(location).attr('href',url, function() { 
    success: { 
        // success stuff 
       } 
    failure: { // failure stuff 
       } 
}); 

我想过用阿贾克斯太多,但我没想到我将能够使用jQuery将结果写入磁盘。如果可能的话,坚持使用windows.location.href似乎更容易。

另一种可能性是找出某种方法来控制“window.location.href”愿意等待多久。可能使用setTimeout()莫名其妙?

非常感谢。

+0

您可以更改iframe位置而不是窗口位置。一旦你改变了窗口的位置,你不能做任何事情。你甚至可以观看iframe的onload和手动超时一段时间后,如果需要的话,你可以显示一条消息,重新加载等...... – dandavis

+0

'我也想过使用.ajax,但我并不认为我会能够使用jQuery将结果写入磁盘。“这是什么意思? –

+0

@LJa我认为他意味着如果页面被保存,dom的更改将不会被保存 – user907860

回答

1

有没有办法来处理超时如果您使用window.location.href触发请求

这是你如何可以做您的要求与jQuery Ajax请求:

$.get("url for request").done(function(htmlReturned) { 
    //do whatever you like here on success, even window.location.href 
}).fail(function(jqXhr, statusText, errorThrown){ 
    //handle failure here 
}); 

如果您需要执行发布请求,您还可以使用$ .post。如果你需要在请求中传递一些参数,你可以这样做$.get(url, {param1: "value1", param2: "value2"});

如果你以前没有做过,最好的资源是ajax page from jquery documentation($ .get和$ .post只是方法的简写调用$ .ajax)。

+0

谢谢 - 我刚试过这个,结果正如预期的那样进入变量“htmlReturned” - 但是,当我使用“windows.location”。 href“结果正确地保存在用户硬盘上。奇怪的是,$ .get(htmlReturned)的结果与使用“windows.location.href”保存的结果不同。我可能不得不重新考虑我想要做什么,仅仅是想出一个更好的方式来下载文件。 – edwardsmarkf