C# ajax调用正在持续运行
我正在使用ajax检查sql数据库中是否没有存储新警报。我已经将它设置为每30秒运行一次,但它会继续调用每秒检查数据库的函数。这是我的密码 这是视图中的代码。“_Tasks”是我的局部视图,它将是要更新的视图。我没有为成功返回做任何事情,因为它从未到达该代码C# ajax调用正在持续运行,c#,jquery,ajax,asp.net-mvc,C#,Jquery,Ajax,Asp.net Mvc,我正在使用ajax检查sql数据库中是否没有存储新警报。我已经将它设置为每30秒运行一次,但它会继续调用每秒检查数据库的函数。这是我的密码 这是视图中的代码。“_Tasks”是我的局部视图,它将是要更新的视图。我没有为成功返回做任何事情,因为它从未到达该代码 @Html.Action("_Tasks") <script type="text/javascript"> (function poll() {
@Html.Action("_Tasks")
<script type="text/javascript">
(function poll() {
$.ajax({
type: 'GET',
cache: false,
url: '@Url.Action("TasksRefresh")',
dataType: "json",
complete: poll,
timeout: 30000,
success: function (data) {
if (data.success == true)
alert("Hello");
}
});
})();
</script>
超时不是延迟。超时是在将请求视为失败之前应该等待的时间。通过将
complete
设置为poll
,您告诉它立即拨打另一个电话。您需要延迟完成功能。尝试以下操作:
(function poll() {
$.ajax({
type: 'GET',
cache: false,
url: '@Url.Action("TasksRefresh")',
dataType: "json",
complete: function () { setTimeout(poll, 30000); }, // Changed, call poll again when 30s has pasted
timeout: 30000, // This just says it fails if the request takes more than 30s
success: function (data) {
if (data.success == true)
alert("Hello");
}
});
})();
我可以猜测的是,在ajax调用完成后,您将再次执行poll函数。完成ajax调用可能只需要一秒钟
您可以在javascript代码中使用计时器。尝试使用settimeout
或setInterval
。然后在计时器中调用ajax。看看是否有帮助。超时:30000
只是为了确保ajax调用在最长时间内等待响应
ajax调用一完成,您就在执行poll函数,这就是调用速度如此之快的原因
(function poll() {
$.ajax({
type: 'GET',
cache: false,
url: '@Url.Action("TasksRefresh")',
dataType: "json",
complete: function () { setTimeout(poll, 30000); }, // Changed, call poll again when 30s has pasted
timeout: 30000, // This just says it fails if the request takes more than 30s
success: function (data) {
if (data.success == true)
alert("Hello");
}
});
})();