Я пытаюсь отправить запрос POST, используя formdata.Но эта ошибка появляется в FF и коде состояния 400. Ошибка синтаксического анализа XML: корневой элемент не найден Расположение: http://127.0.0.1:8000/ajax/set_user_profile/. В журналах сервера запрос к функции даже не достигает.У меня есть другой запрос POST, который работает без проблем, но этот не работает.Также я проверил HTML с W3C валидатором.все в порядке.
JS
function set_user_profile(e){
e.preventDefault();
let csrf_token = document.getElementById("profile-menu-csrf").value;
let form = document.getElementById("profile-form");
let formData = new FormData(form);
let xhr = new XMLHttpRequest();
xhr.open('POST', '/ajax/set_user_profile/', true);
xhr.setRequestHeader('Content-Type', 'multipart/form-data')
xhr.setRequestHeader('X-CSRFToken', csrf_token);
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 ){
if (xhr.status === 200){
console.log('ok');
}
else{
console.error(xhr.status);
}
}
};
xhr.send(formData);
}
HTML-форма, подобная этой
<form id="profile-form">
<input name="csrfmiddlewaretoken" value="${csrf_token}" type="hidden" id="profile-menu-csrf">
<input type="text"/>
<textarea></textarea>
<input type="text"/>
<input type="text"/>
<input type="text"/>
<input type="submit"/>
</form>
URL conf
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/$', generic.RedirectView.as_view(url='/accounts/login', permanent=False), name='login'),
url(r'^register/$', views.registration, name='registration'),
url(r'^webchat/$', views.home, name="home"),
url(r'^ajax/add_chat/$', ajax.add_chat, name='add_chat'),
url(r'^ajax/update_chats/$', ajax.update_chats, name='update_chats'),
url(r'^ajax/load_messages/$', ajax.load_messages, name='load_messages'),
url(r'^ajax/who_online/$', ajax.who_online, name="who_online"),
url(r'^ajax/get_user_profile/$', ajax.get_user_profile, name="get_user_profile"),
url(r'^ajax/set_user_profile/$', ajax.set_user_profile, name='set_user_profile'),
]
Django view только для тестирования
def set_user_profile(request):
data = {}
data['ok'] = 'ok'
return JsonResponse(data)