javascript - 如何在 AJAX 到 Django 表单后停止刷新
问题描述
我有一个模式,用户可以在其中添加新的Category
. 当用户添加一个新的Category
并收到来自 AJAX 请求的响应时,我想使用响应数据来更新一些现有的页面数据。问题是我的表单不允许e.preventDefault()
,而只是在收到响应后刷新页面:
jQuery AJAX:
function addCategory(e) {
let post_url = '{% url "policies-categories-form" %}'
$.ajax({
url: post_url,
type:'POST',
data: $('#addCategoryForm').serialize(),
success: function(response){
console.log(response);
// document.getElementById('editCategoriesContainer').innerHTML = data;
},
error:function(){
console.log('Error');
},
});
};
表单(仅在用户单击按钮后使用 JQuery 加载:
{% load crispy_forms_tags %}
<!--Add new category form-->
<div class="form-row mt-4 mb-4">
<div class="form-group col-md-12 mb-0">
{{ form.title|as_crispy_field }}
</div>
</div>
<div class="form-row mt-4 mb-4">
<div class="form-group col-md-12 mb-0">
{{ form.parent|as_crispy_field }}
</div>
</div>
<div class="form-row mt-4 mb-4">
<div class="form-group col-md-12 mb-0">
{{ form.groups|as_crispy_field }}
</div>
</div>
<div class="form-row mt-4 mb-4">
<div class="form-group col-md-12 mb-0">
<button class="btn btn-warning btn-block"
id="addCategoryBtn"
onclick="addCategory(this)"
type="submit">
<span class="fas fa-plus"></span> Add Category
</button>
</div>
</div>
看法:
@login_required
def policies_categories_form(request):
if request.method == 'POST' and request.is_ajax():
form = PoliciesCategoryForm(request.POST, company=request.tenant)
if form.is_valid():
form.save()
categories = PoliciesAndProceduresCategory.objects.exclude(parent__isnull=False).values()
return JsonResponse({'success': True, 'categories': list(categories)})
else:
return JsonResponse({'success': False, 'error': form.errors})
else:
form = PoliciesCategoryForm(company=request.tenant)
context = {'form': form}
template = 'policies/policies_categories_form.html'
return render(request, template, context)
如何阻止它刷新页面?
谢谢!
解决方案
推荐阅读
- r - 使用 pmap 将参数 tibble 映射到函数 assign 会生成一个列表,而不是环境中的对象(根据需要)
- java - SwingWorker 与 ExecutionService 和共享对象
- elixir - Phoenix 会话调试/配置
- javascript - 如何独立于浏览器视口导出/保存 SVG(例如,使用预定义的高度和宽度)
- python - 下载适用于 Mac 的 Python 32 位
- swift - Firebase 分析已停用。未记录事件。未显示广告
- c - MPI基础图像处理——使用MPI进行卷积
- javascript - Angular 6计时器问题
- c++ - 未安装 QT C++ 模块
- swagger - 如何在 OpenAPI (Swagger) 中指定默认的 XML 元素文本?