1

不问如何中止 AJAX。

在这种情况下,有谁知道如何防止服务器传输?

例如,在动态分页中,用户可能一次快速滚动 1 行,从而引起许多请求。

这可以在客户端 jQuery 上轻松取消abort,但是对于我们这些在带宽分配上吝啬的人来说,我们如何才能在收到新请求时阻止先前的请求传输?

提前谢谢了!

细节

实际上,这是因为我使用的是 jQuery UI Slider,并且我已经将slide事件设置为命中服务器。

正如你所料,如果你把那个傻瓜滑过 10%,服务器就像疯了一样被击中,即使我已经abort编辑了,它仍在传输所有数据。

这是问题的真正根源,因为可能(在我看来)快速按下向上或向下按钮是无法停止的。

4

2 回答 2

1

我想我想多了。

在动态分页的情况下,我想我可以在 php 的开头设置一个$_SESSION等于并将它保存在一个变量中。microtime(true)

在传输(或任何其他资源密集型步骤)之前,我可以检查它是否仍然相等。如果没有,exit.

但是,如果其他人可以提出允许多个并行请求的通用解决方案,他们会得到我的检查和 +1。

于 2012-12-30T09:23:09.087 回答
-1

在这种情况下,您可以考虑使用服务器发送的事件。这将打开一个持久的 HTTP 连接,用于将数据从服务器传输到客户端。这样可以防止客户端快速请求数据并浪费带宽。示例代码:

服务器端:(PHP)

<?php
@set_time_limit(0);
header('Content-type: text/event-stream');
header('Transfer-encoding: chunked');
while(true){
    echo 'data:'.$data."/n/n";//todo: send data here
    ob_flush();
    flush();
}
?>

客户端:(javascript)

var ev = new EventSource('path/to/script');
ev.onmessage = function(e){
    var data = e.data;
    //todo: handle data here
};

希望这可以帮到你。

于 2012-12-30T09:03:52.977 回答