如何在一段时间后在后台运行ajax调用?

3

我希望在一段时间后显示提示消息:“您要继续吗?”如果用户选择是,则必须在后台运行ajax调用,否则取消ajax调用。请告诉我如何在ajax调用响应中设置时间条件。


Ajax调用通常在后台运行。 - madalinivascu
浏览器不支持后台任务。 - Hatim
5个回答

0

在JavaScript或jQuery中使用setTimeout()函数


0

var time = 5000;
setTimeout(function() {
  if (confirm('Do you want continue?')) {
    var root = 'http://jsonplaceholder.typicode.com';

    $.ajax({
      url: root + '/posts/1',
      method: 'GET'
    }).then(function(data) {
      console.log(data);
    });
  } else {
    // Do nothing!
  }

}, time)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


翻译:并不容易理解原帖作者想要什么,但是你的代码运行良好,并且可能已经实现了所需功能。我建议将“5000”替换为“1000”,甚至是“700”。(提问者没有指定时间。) - Henke
由于 OP 没有指定,因此将其保持为变量。第一行可以更改为最适合您用例的内容。无论如何,这已经很老了-很高兴看到人们在5年后仍然关注它。我想这是我的第一篇帖子之一 :) - Iceman

0
从你的问题中我理解到,ajax调用将在询问用户“是否要继续”之前进行,是这样吗?
我相信你想确保用户如果ajax调用时间过长,是否愿意等待?
如果是这种情况,你只需要在用户按下“否”时设置一个标志,并中止ajax调用即可。

// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax( "example.php" )
  .done(function() {
    alert( "success" );
  })
  .fail(function() {
    alert( "error" );
  })
});

//when user pressed no call the below function if the ajax is not completed
jqxhr.abort()


0
在技术术语中,它被称为长轮询请求... 就像这样。
function longPolling()
{
    $.ajax({
        //..... your ajax configurations like url, type, dataType...etc
        success: function(data){
            // your code  for handle success response
           setTimeout(function(){
                    longPolling();
                },5000) // call again after 5 seconds
        },
        error: function(xhr){
            //  your code  for handle error response
           setTimeout(function(){
                    longPolling();
                },5000) // call again after 5 seconds
        }
    };
});

longPolling();// call where ever you need

希望它对你有所帮助


-1

window.setTimeout(function () {

if (confirm('Do you want continue?')) {
    // Do some ajax?
} else {
    // Do nothing!
}

}, 5000);


不,它不会。 - Hatim
1
我的朋友,"ajax调用必须在后台运行"。你的代码将在UI线程中执行。正确的答案是,浏览器不支持后台任务。 - Hatim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接