Ajax 在 ajax 内部调用

Ajax call inside ajax

本文关键字:调用 内部 ajax Ajax      更新时间:2023-09-26

我的网页上有一个按钮。如果用户单击它,任务将启动并返回 ID。我想使用此 ID 在另一个 ajax 调用中检查任务的进度,让用户知道任务是否已完成。

我已经尝试过这个,但我认为这不是正确的方法:

<script type="text/javascript">
$(document).ready(function() {
    $('#get-user-transactions').click(function() {
        $( "#user-transactions" ).after( "<p>Loading data</p>" );
            $.ajax({
                url: "/start-task/",
                dataType: "json", 
                success: function(data){ 
                    if(data) { 
                        var stateCheck = setInterval(   
                            $.ajax({
                                url: "/check-taskstate/"+data.task_id,
                                dataType: "json", 
                                success: function(data){ 
                                   if (data.updated == 'true') {
                                       clearInterval(stateCheck);
                                       window.location.reload();
                                   }
                                } 
                            })//ajax
                        , 1000); //stateCheck   

                    }                        
                } 
            })//ajax
    });
});
</script>

编辑

我更新了我的代码,所以第一个 url 也给出了一个 json 响应。但是如果我尝试我的代码,我会收到此错误:

Uncaught SyntaxError: Unexpected identifier

由于setInterval()接受函数或代码,但您传递的是 jqXHR 对象,因此您一定因此而收到错误。

func 是您希望重复调用的函数

替代语法中的代码是您希望重复执行的代码字符串(不建议使用此语法,原因与使用 eval() 相同)

var stateCheck = setInterval(function(){
    $.ajax({
        url: "/check-taskstate/"+data.task_id,
        dataType: "json", 
        success: function(data){ 
           if (data.updated == 'true') {
               clearInterval(stateCheck);
               window.location.reload();
           }
        } 
    });
}, 1000); //stateCheck