gpt4 book ai didi

javascript - 通过 Ajax 向 Django 发送复选框列表

转载 作者:行者123 更新时间:2023-12-03 05:50:35 25 4
gpt4 key购买 nike

我的 Django 应用程序的表格中有一个复选框列表。用户选择其中一些,然后单击操作按钮。然后会弹出一个小的弹出模式表单,他们在其中填写与所选项目相关的信息,并且还可以在弹出窗口中上传文件。我需要将选定的复选框的 id 和模式中的表单字段通过 ajax 发送到 Django

我已将模式包装在表单标记中,一切正常。我正在努力将选定的 ID 列表发送到 Django。当用户选择 id 31 和 32 时,它会将其作为字符串“31,32”发送,Django 无法对其进行解码。我确信这是一个快速修复,但我的 JavaScript 知识有限。

下面是我的代码:

HTML:

<tr>
<td ><input class="selection-box" type="checkbox" name="action" value="{{ item.id }}"></td>
<td>...</td>
</tr>
<tr>
<td ><input class="selection-box" type="checkbox" name="action" value="{{ item.id }}"></td>
<td>...</td>
</tr>

Javascript:

submitHandler: function () {
var matches = [];
$(".selection-box:checked").each(function() {
matches.push(this.value);
});
var form = document.forms.namedItem("fileinfo");// This is the popup form that contains that file upload box and other fields
var oData = new FormData(form);
if (matches.length) {
oData.append('action', matches);
}
$.ajax({
url: url,
processData: false,
contentType: false,
type: 'post',
data: oData,
success: function (data) {
if (data.success == true) {
location.reload();
}
}
});
}

Django View :

# This generates the error: ValueError: invalid literal for int() with base 10: '33,31'  
selected_list = self.request.POST.getlist('action')

最佳答案

由于您是手动进行“解码”,因此可以使用 .get.split,而不是使用 .getlist:

selected_list = self.request.POST.get('action', '').split(',')

但请记住,返回的 list 将包含您的 ids 作为字符串,因此您可以使用 map 将它们转换为整数。

try:
cleaned_list = map(int, selected_list)
except ValueError:
#list is empty: ['']
cleaned_list = []

关于javascript - 通过 Ajax 向 Django 发送复选框列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40169234/

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