javascript - 附加值为 bool 值 false 的 FormData 字段会导致该函数失败。

标签 javascript jquery ajax django form-data

我正在尝试通过 AJAX 向 Django 服务器发送一个简单的表单,其中一个字段是要更新的对象 id,另一个字段是相应对象应更新到的 bool 字段。在 Javascript 中,我初始化一个新的 FormData 并附加表单值,然后通过 Ajax 调用将其提交到服务器。但是,当 bool 表单数据字段设置为false时,Ajax 请求失败,表示该字段未设置。

表格

from django import forms
class UpdateHazardForm(forms.Form):
  pk = forms.IntegerField()
  fixed = forms.BooleanField()

相关js代码

var fd = new FormData();
fd.append('pk', pID)
fd.append('fixed', checked)

// Ajax changes to server
$.ajax({
  url: "/update_hazard/",
  type: 'POST',
  data: fd,
  dataType: "json",
  processData: false,
  contentType: false,
  success: function(data) {
    if (data['success']) {
      console.log("success");
    }
    else{
      console.log("not success");
    }
  }
});

查看功能

@require_POST
@user_passes_test(lambda u: u.is_superuser)
def updateHazard(request):
  form = UpdateHazardForm(request.POST)
  if form.is_valid():
    pk = form.cleaned_data['pk']
    fixed = form.cleaned_data['fixed']

    hazard = get_object_or_404(Hazard, pk=pk)
    hazard.hazard_fixed=fixed
    hazard.save()

    return JsonResponse({'success': True})
  logger.debug(form.errors)
  return JsonResponse({'success': False})

调用fd.append("fixed", checked)时如果checked==true,则ajax post成功。当检查== false时,它会失败并出现错误<ul class="errorlist"><li>fixed<ul class="errorlist"><li> This field is required.</li></ul></li></ul>

我怀疑 FormData.append(name, value) 函数使用 if 语句检查值,当值为 bool 值 false 时,该函数会失败。我尝试使用 toString() 将“checked”值更改为字符串,但没有成功。

感谢任何帮助。我更愿意将表单字段保留为 BooleanField 以保持 View 功能简单。

最佳答案

如果您希望 bool 字段接受 false,则需要设置 required=False

fixed = forms.BooleanField(required=False)

关于javascript - 附加值为 bool 值 false 的 FormData 字段会导致该函数失败。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31349584/

相关文章:

javascript - 在 div 中只拖放一个按钮

javascript - 如何让我的 Jchartfx 面积图显示在我的 gridview 下方?

php - 如何只允许某些设备访问网站

javascript - AJAX 以渐进的方式读取数据,而不仅仅是在完成时

javascript - Svg 圆形填充 CSS

javascript - 在 THREEjs 中为每张脸设置随机颜色会导致黑色对象

javascript - 使用 ajax 的 Formspree 联系表单不起作用

javascript - REST api 支持的 JavaScript 表

Javascript Alert 干扰 Ajax

jquery - 跨域 jQuery .AJAX 问题