Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同时进行AJAX调用以分离Django视图_Ajax_Django - Fatal编程技术网

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

同时进行AJAX调用以分离Django视图,ajax,django,Ajax,Django,我有一个Django视图,它在收到POST请求时运行特定的函数 片段: def run_function(request): if request.method == 'POST': run_some_function() def get_progress(request): progress = calculate_progress() return HttpResponse(json.dumps(progress), content_type="ap

我有一个Django视图,它在收到POST请求时运行特定的函数

片段:

def run_function(request):
    if request.method == 'POST':
        run_some_function()
def get_progress(request):
    progress = calculate_progress()
    return HttpResponse(json.dumps(progress), content_type="application/json")
这是通过AJAX调用的,如下所示:

$.ajax({
    'type' : 'POST',
    'url' : '/run_function/',
    'data' : data,
    'success' : function(json) {
            // Display results to user
        }
    });
这正如预期的那样有效。但是,这个特定的函数可能需要一段时间才能运行,因此我想向用户显示进度信息

幸运的是,我有另一个函数可以返回任务的进度(0-100之间的整数)

片段:

def run_function(request):
    if request.method == 'POST':
        run_some_function()
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调用更好的设计


谢谢你的帮助

AJAX中的A代表异步。你不需要做任何特别的事情。如果您已整理好视图和进度,则只需执行以下操作:

$.ajax({
    'type' : 'POST',
    'url' : '/run_function/',
    'data' : data,
    'success' : function(json) {
            // Display results to user
        }
    });
var check = setInterval(check_progress, 500);

AJAX中的A代表异步。你不需要做任何特别的事情。如果您已整理好视图和进度,则只需执行以下操作:

$.ajax({
    'type' : 'POST',
    'url' : '/run_function/',
    'data' : data,
    'success' : function(json) {
            // Display results to user
        }
    });
var check = setInterval(check_progress, 500);

只进行一次ajax调用,让处理视图调用任意多个附加视图。@w这是一个有趣的想法,但是我如何将数据从视图传递回JavaScript呢?假设我启动一个新进程来运行函数。然后,当它运行时,我让视图调用另一个返回HTTPResponse的视图。它是否会将其返回到调用视图?在这个设计中,我不知道如何在函数运行时动态地更新JS端。然后重构代码并将公共代码放入python模块中。进行一次ajax调用,让处理视图调用任意多个附加视图。@w这是一个有趣的想法,但我如何将数据从视图传递回JavaScript?假设我启动一个新进程来运行函数。然后,当它运行时,我让视图调用另一个返回HTTPResponse的视图。它是否会将其返回到调用视图?在这个设计中,我不知道如何在函数运行时动态地更新JS端。然后重构您的代码并将普通代码放入python模块中。谢谢!我确实读过很多浏览器限制您同时运行两个AJAX请求,但现在我只需要这些。是的,这与一次运行两个以上的请求非常不同。谢谢!我确实读过很多浏览器限制您同时运行两个AJAX请求,但现在我只需要这些。是的,这与一次运行两个以上的请求非常不同。