我有一个Django视图,在收到POST请求时运行特定的功能。
段:
def run_function(request):
if request.method == 'POST':
run_some_function()
这是通过AJAX调用的,如下所示:
$.ajax({
'type' : 'POST',
'url' : '/run_function/',
'data' : data,
'success' : function(json) {
// Display results to user
}
});
这可以按预期工作。但是,此特定功能可能需要一段时间才能运行,因此我希望向用户显示进度信息。
幸运的是,我有另一个函数可以返回任务的进度(0到100之间的整数)。
段:
def get_progress(request):
progress = calculate_progress()
return HttpResponse(json.dumps(progress), content_type="application/json")
然后我可以每X秒进行一次AJAX调用以获得进度并更新我的进度条:
function check_progress() {
$.ajax({
'type' : 'POST',
'url' : '/get_progress/',
'success' : function(response) {
if (response >= 100) {
// Update progress bar to 100% and clearInterval
} else {
// Update the progress bar based on the value returned by get_progress
}
}
});
}
var check = setInterval(check_progress, 500);
问题是......我怎么能同时做到这两件事?我需要能够进行AJAX调用以运行函数和同时进行AJAX调用以监视进度。
对于如何完成此操作有任何建议吗?或者可能是一个比制作两个AJAX调用更好的设计?
感谢您的帮助!
答案 0 :(得分:0)
AJAX中的A代表异步。你不需要做任何特别的事情。如果您的意见和进度已经整理出来,您需要做的就是:
$.ajax({
'type' : 'POST',
'url' : '/run_function/',
'data' : data,
'success' : function(json) {
// Display results to user
}
});
var check = setInterval(check_progress, 500);