我正在尝试做的是:
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")