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

标签 javascript ajax django

我的 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/

相关文章:

javascript - javascript中当列<td>标签的表格包含 `display:none`时如何访问

php - Ajax - responseText 工作但 responseXML 为空

javascript - Rails - jQuery/AJAX 不刷新部分

python - redis - 使用哈希

python - 如何在 CreateView 中设置 ForeignKey?

javascript - 在我的开放层 3 map 上叠加菜单按钮

javascript - 如何求和对象内的对象属性?

javascript - 如何在没有 id 的情况下将 jQuery 元素传递给 JavaScript 函数?

javascript - 将图表点绘制为实时流 : Highcharts

python - 在 Django 日志记录中使用 str.format()