在ajax中调用Ajax

时间:2014-11-21 12:48:00

标签: javascript jquery ajax

我的网页上有一个按钮。如果用户单击它,则任务启动并返回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

1 个答案:

答案 0 :(得分:1)

由于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