Как передать значение из ajax в представления
У меня есть поле выбора в моем шаблоне и каждый раз, когда я изменяю значение, я должен нажать кнопку, чтобы отправить значение. Я знаю, что ajax может решить эту проблему, но вот что я пытаюсь сделать следующим образом:
Views.py
def check_state(request,n):
if request.method=='POST':
state= request.POST.get('thestate')
dict1 = {'name':name}
print(dict1)
return JsonResponse(dict1, safe=False)
template.html
<select id="select_state" name="updated_state">
<option disabled="true" selected>{{current_state}}</option>
{% for state in States %}
<option>{{state}}</option>
{% endfor %}
<script>
var state = document.getElementById( "select_state" );
var x=state.addEventListener( "change", output, true );
function output() {
console.log ( state.value );
$.ajaxSetup({
beforeSend: function(xhr, settings) {
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
// Only send the token to relative URLs i.e. locally.
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
}
}
});
$.ajax({
url:'/req-3', # it will call check_state function in views.py
method:'POST',
data: {thestate:state.value},
dataType: "json",
processData:false,
csrfmiddlewaretoken:'{{ csrf_token }}',
success:function (response){
alert(response.thestate);
}
})
}
</script>
но по какой-то причине я не получаю никаких данных при изменении. Думаю, я что-то упустил?
Заключение
Я хочу изменить значение в базе данных без кнопки отправки