私は、POSTリクエストを受け取ったときに特定の機能を実行するDjangoビューを持っています。Djangoビューを別々のAJAX呼び出しにする
スニペット:次のようにこれは、AJAX経由で呼び出され
def run_function(request):
if request.method == 'POST':
run_some_function()
は:予想通り
$.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")
私は、AJAXの進捗状況を取得し、私のプログレスバーを更新するために、すべてのX秒を呼び出すことができます:
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コールで進行状況を同時に監視できるようにする必要があります。
これを達成するための提案はありますか? 2つのAJAXコールを作るよりも優れたデザインですか?
ありがとうございました!
単一AJAX呼び出しを行い、あなたが好きなように多くの追加のビューとして取り扱いビューコールをしましょう。 – Wtower
@Wtower興味深い考えですが、ビューからJavaScriptにデータをどのように戻すことができますか?関数を実行するための新しいプロセスを開始するとしましょう。次に、実行中に、ビューにHTTPResponseを返す別のビューが呼び出されます。それを呼び出し側のビューに戻すことはできませんか?この設計では、関数が実行されている間にJSサイドを動的に更新する方法を理解していません。 – AndroidNoobie
右。その後、あなたのコードをリファクタリングし、共通のコードをPythonモジュールに置きます。 – Wtower