我确实需要在 Django 中进行相同的 ajax POST 调用。所以我使用 Django 文档中描述的方法:
function csrfSafeMethod(method) {
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
crossDomain: false,
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type)) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
但是,当我进行 ajax 调用并想为 beforeSend 方法添加一些操作(即显示加载器图像)时,它会删除上述功能。例子:
$.ajax({
url: "some_url",
type: "POST",
data: some_form.serialize(),
beforeSend: function() { some_element.showLoader();}
});
$.ajax({
url: "some_other_url",
type: "POST",
data: some_other_form.serialize(),
beforeSend: function() { some_other_element.showLoader();}
});
DRY 很重要,我不想将“showLoader()”函数放在 ajaxSetup 中,因为它可能会有所不同。