gpt4 book ai didi

javascript - 处理 django session 中的异步 ajax 调用

转载 作者:行者123 更新时间:2023-12-03 09:37:33 25 4
gpt4 key购买 nike

我有一个 Django 应用程序,其中模板包含 JavaScript 中的 for 循环,它会迭代某个表中的所有复选框。对于每个复选框,我向 View 函数发送一个 ajax 请求,我想在列表中保存复选框的 id 或从列表中删除该 id(取决于选中状态)。我需要该列表成为 request.session 字典的一部分。结果显示 ajax 调用是异步的,这使得我的列表被错误更新并且不一致。是否有一些线程安全的数据结构可以作为 session 的一部分存储,并确保同步列表更新?

JavaScript 和 Ajax:

function checkAll(source, type) {
checkboxes = document.getElementsByName(type);
for(var i=0, n=checkboxes.length;i<n;i++) {
if (checkboxes[i].checked != source.checked) {
checkboxes[i].checked = source.checked;
select_row(checkboxes[i], source.checked);
}
}
}

function select_row(row_selector, is_checked) {
is_box_checked = typeof is_checked !== 'undefined' ? is_checked : row_selector.checked;
request = {
url: "{% url 'set_check_box' %}",
type: "POST",
contentType: "application/x-www-form-urlencoded",
data: {
csrfmiddlewaretoken: "{{ csrf_token }}",
checked: is_box_checked,
check_box_id: row_selector.id,
type: row_selector.name
},
error: function(response, status, error_msg) {
console.log(error_msg);
}
};
$.ajax(request);
}

查看功能:

def set_check_box(request):
request.session.modified = True
check_box_list = list(request.session['connects_check_boxes_id_list'])
check_box_id = request.POST["check_box_id"]
is_checked = json.loads(request.POST['checked'])
if is_checked:
check_box_list.append(check_box_id)
else:
check_box_list.remove(check_box_id)
request.session['connects_check_boxes_id_list'] = list(check_box_list)
return HttpResponse("")

最佳答案

我所要做的就是将 async 选项设置为 false 作为请求参数的一部分。

function select_row(row_selector, is_checked) {
is_box_checked = typeof is_checked !== 'undefined' ? is_checked : row_selector.checked;
request = {
url: "{% url 'set_check_box' %}",
type: "POST",
contentType: "application/x-www-form-urlencoded",
async: false,
data: {
csrfmiddlewaretoken: "{{ csrf_token }}",
checked: is_box_checked,
check_box_id: row_selector.id,
type: row_selector.name
},
error: function(response, status, error_msg) {
console.log(error_msg);
}
};
$.ajax(request);
}

关于javascript - 处理 django session 中的异步 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31288581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com