我正在尝试做的是:
1.最初根据一些输入向服务器发出ajax请求
2.服务器返回由RQ(Python-rq)生成的作业ID
3.根据对作业ID定期构造的URL的作业ID ajax请求,直到获得有效响应

我有的:

$.ajax({
    type: "POST",
    url: "/start",
    data:{crop: valueCrop, state: valueState, variablemeasure: valueVariable, unit:unitMeasure, from:yearFrom, to:yearTo},
    success: function(results) {
        console.log(results);
        var jobId='';
        jobId = results;
        function ajax_request() {
            $.ajax({
                type: "GET",
                url: "/results/" + jobId,
                dataType: "json",
                success:function(xhr_data) {
                    if (xhr_data == {"status":"pending","data":[]}){
                        console.log("Waiting for response");
                        setTimeout(function() { ajax_request(); }, 2000);
                    } else {
                        console.log(xhr_data);
                    }
                },
                error:function(error) {
                    console.log(error)
                }
            });
        }
    },
    error: function(error) {
        console.log(error)
    }
})


这有可能吗?尽管rq表示工作已完成,但控制台上根本没有任何输出。我认为这不是进入if循环。当我访问“ / results / jobId” URL时,可以看到结果。
请帮忙。

最佳答案

我在这段代码中看到了一些错误。首先,您已定义函数ajax_request()。但是您没有打电话。您可以在其定义的末尾调用它。

其次,此代码有问题:

if (xhr_data == {"status":"pending","data":[]})


对象符号创建另一个绝对不等于xhr_data的对象。

你可以做:

if (xhr_data.status === "pending")

09-25 17:20
查看更多