同时进行AJAX调用以分离Django视图

时间:2017-01-11 06:24:44

标签: ajax django

我有一个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调用更好的设计?

感谢您的帮助!

1 个答案:

答案 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);