当.load请求挂起时,无法刷新页面

时间:2017-08-03 20:00:02

标签: javascript php jquery api

我正在制作一个Steam API的网站 我是通过亲自签名的朋友列表来尝试的。

但是你拥有的朋友越多,加载页面所需的时间就越长 所以我在页面加载完成后立即开始加载朋友。

如果我在页面请求朋友列表时尝试刷新页面或注销,它会一直加载,直到获取好友列表,然后才刷新页面或注销。

如何修复,以便我可以刷新页面而无需等待请求被执行。

这是我用来加载PHP文件的jQuery:

$(function() {
  $('#friends').load("friendstest.php");
});

如果您需要更多信息,请告诉我。

website is here

2 个答案:

答案 0 :(得分:0)

您可以将其分成多个调用,而不是在一次调用中加载整个好友列表:

upto = 0;
function loadMoreFriends() {
    $('#friends').append("friendstest.php?limit=10&start="+upto);
    upto += 10;
}

在此示例中,upto记录已加载的朋友数量。 php将仅返回10个朋友,并从页面upto开始。

您可以在页面加载时调用此函数,然后在您希望将更多朋友加载到页面时(滚动到底部或类似)。

答案 1 :(得分:0)

这可能是因为sessión写锁定。

如果您发出请求并且需要很长时间,则会锁定用户会话文件以进行写入,因此在上一个请求发布文件之前,另一个请求无法打开它以进行写入,并且在结束时完成php脚本。

如果您的php脚本不会在会话中写入任何数据,您可以调用session_write_close()函数来释放锁(http://php.net/manual/en/function.session-write-close.php),以便启用其他请求来打开会话文件。

所以在你的friendstest.php开始时和session_start之后,你可以调用session_write_close()。