【发布时间】:2021-10-03 18:46:34
【问题描述】:
您好,我正在尝试在单击表单复选框并将复选框布尔值传递给 view.py 时刷新我的网页。
我正在尝试使用 Ajax 来完成此任务,但这是第一次使用 Ajax,我真的不知道它是否正常工作。
HTML 和 AJAX:
<script type="text/javascript">
$("#check_legend").change(function(){
var form_data = $("#form_legend").serialize();
$.ajax({ url: '/api/post_form/',
type: "POST",
dataType: "json",
data: {form_data: form_data},
//cache: false
}).done(function(data) {
if (data.result === true){
alert(data.message);
}
});
});
</script>
<div class="row">
<div class="col-sm-10">
{{ map|safe }}
</div>
<div class="col-sm-2">
<form method="post" id="form_legend">
<h3><span style="color: #e8c4b4;">Places</span></h3>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="check_legend" name="cities">
<label class="form-check-label" for="check_legend">Cities</label>
</div>
</form>
</div>
</div>
如果有用的话,这在我的 url.py 中:
path('api/post_form/', post_form_api, name="post_form_api")
对于 ajax 响应,我的 view.py 如下所示:
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def post_form_api(request):
data = {}
if request.method == "POST" and request.POST.get('cities', None) is not None:
form_field1 = request.POST.get('cities')
# save the form data and indicate success
data['result'] = True
data['message'] = "Form saved successfully"
...
if request.is_ajax():
return JsonResponse(data)
else:
return HttpResponseBadRequest()
在 view.py 的不同部分中,我为网页赋值,我处理 POST 请求,如下所示:
if request.method == 'POST':
if request.POST.get['cities', False]:
【问题讨论】:
-
有错误吗?尝试打印
request.POST.get('form_data')告诉我你看到了什么... -
@MoiMyazz 如果我在 ``` 之后这样做 if request.method == 'POST': ``` 当我选中和取消选中复选框时,我什么也得不到。似乎没有触发任何东西。第一次打开网页时,我什至没有在控制台日志中看到任何内容。
-
不,兄弟,试试
if request.method == 'POST':上方的打印语句request.POST.get('form_data')你应该会看到类似QueryDic的对象。 -
遗憾的是,如果我在 if 语句上方尝试它,则不会出现类似的情况,这可能是因为我的表单数据未保存在模型中吗?我试图在没有模型的情况下完成这项工作。
-
不,兄弟,这里的模型形式不是问题......这似乎是来自前端。更新您的 Ajax 调用...
url: '/api/post_form/',//cache: false、data: {form_data: form_data}。试试这些,告诉我你得到了什么
标签: javascript python jquery django ajax