gpt4 book ai didi

perl - Jquery.get 超时行为?

转载 作者:行者123 更新时间:2023-12-03 22:52:56 25 4
gpt4 key购买 nike

我是网络编码新手,最近一直在使用 JQuery。我注意到一些行为,想知道这是否是正常行为以及处理它的最佳方法。

我正在对我的网络服务器进行简单的访问,有时服务器可能需要几分钟才能返回其结果。我注意到我的服务器端代码被多次调用,在这种情况下“/userprofile”最多可以被调用 3 次。

("li#user").click(function(){
$.get('/userprofile',{partialrender: 'true' },
function (data) {
$("div#content").html(data);
});
});

所以我的问题是;

1)这是正常行为吗?和2)如果是这样,是 JQuery 还是浏览器进行了额外的调用?3)有什么好的方法可以处理这个问题?

我知道问题 3 的答案可能很难,但非常感谢任何帮助。

非常感谢。

更新:

谢谢大家,

好吧,由于后端数据库很小,所以我无法生成该确切调用的问题,但我可以使用另一个相同的调用。我在获取之前放置了一个警报调用,并且只调用了一次。我正在使用 Mojolicious 网络框架,所以我想知道它是否与此有关?我正在使用 Morbo 网络服务器。

这是我的代码,表现出这种行为

("li#importDevice").click(function(){
alert('import clicked');
$.get('/importDevice',{device: 'corptest' },
function (data) {
$("div#content").html(data);
});
})



sub importDevice {
my $self = shift;
my $res = "test";
my $dir = $self->session("dir");
my ($debug, $log, $path, $upload) = createLogHandles($self);
my %deviceEntry = device::getDeviceEntry($devicename);
print "In Import Device \n";
return $self->redirect_to('failed') unless $self->session('role') eq 'admin';

my %sessiondetails = utils::buildSessionDetails(%deviceEntry);

#THE FUNCTION BELOW IS WHERE THE DELAY CAN BE.
my $result = utils::connectToDevice(\%sessiondetails);

if ($result ne 'failedconnect') {
Vendor::importConfig($session,$dir);
Vendor::processConfig($dir,$debug,$upload);
}
$self->render(text => $result);
}

当我的 utile::connectToDevice 需要一段时间才能响应时,我看到整个回调被再次调用。

这是我的 morbo 网络服务器日志的输出。它确实接到了两个电话。

[Thu Nov 22 00:22:27 2012] [debug] GET /importdevice (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11).
[Thu Nov 22 00:22:27 2012] [debug] Routing to controller "MyApp::DevT" and action "importDevice".
[Thu Nov 22 00:22:50 2012] [debug] 200 OK (22.117681s, 0.045/s).
[Thu Nov 22 00:22:50 2012] [debug] GET /importdevice (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11).
[Thu Nov 22 00:22:50 2012] [debug] Routing to controller "MyApp::DevT" and action "importDevice".

最佳答案

我在进行 ajax 调用时的建议是,设置一个标志,指示已经向服务器发出了请求。每次检查该标志并根据其状态决定是否发出请求。一旦收到服务器的响应,就会重置标志。所以你可以试试这个 -

var running=false;
$("li#user").click(function(){

if(!running){
running=true;
$.get('/userprofile',{partialrender: 'true' },
function (data) {
$("div#content").html(data);
running=false;
});
}
});

这样可以避免用户点击按钮100次,请求泛滥的情况。

更新

删除了 if 条件中的错误。

如果上述方法没有帮助,请执行此操作。

$("li#user").unbind('click').click(function(){
// do the thing
});

这将从元素中分离所有点击处理程序和事件并再次绑定(bind)。

关于perl - Jquery.get 超时行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13506809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com