У меня есть форма, которую я отправил через Ajax и хотел бы передать обработанные данные в тот же HTML для ввода данных.
Не уверен, что это правильно, я отправил данные на URL /cat_select
и планирую получить значение, обработанное в Python, по тому же URL-адресу, но у меня возникают проблемы с возвратом данных.
Ниже приведена функция POST
def cat_select(request):
cat_result=[]
cat_selected=[]
cat_name=['l2','l3']
cat_selected=list(map(lambda x:request.POST.get(x, '').split(','), cat_name))
cat_result=c_result(["US"],cat_selected) #list of tuples I want to get
print(cat_selected)
print(cat_result)
return JsonResponse({'cat':cat_result},safe=False)
Когда я открываю /cat_select
для cat_result
, я получаю пустой список вместо того, что напечатано в консоли Python. Как я могу получить доступ к обработанным значениям?
Я хочу иметь cat_result
на веб-странице. Я хотел бы обработать данные после отправки формы и затем вернуться, но браузер, похоже, GET
данные до POST
с кодом ниже.
<form id="cat_select">{% csrf_token %}
<input class="site" name="site" type="text">
<input class="l2" name="l2" id="l2" type="text" style="width:30%">
<input class="l3" name="l3" id="l3" type="text" style="width:50%">
<br>
<button class="btn btn-outline-success my-2 my-sm-0" type="submit" id="cat_submit">Submit</button>
</form>
<script type="text/javascript">
$(document).on('submit','#cat_select',function(e){
e.preventDefault();
$.ajax({
type:'POST',
url:'/cat_select',
data:{
l2:$('#l2').val(),
l3:$('#l3').val(),
csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val()
},
success: function(){
alert ("selected!")
}
});
$.ajax({
method:'GET',
url:'/cat_select',
success:function(data){
console.log(data);
alert ("Data back!")
},
error:function(data){
console.log('Error!');
}
});
});
</script>
Если для обработанных данных необходимо использовать второй URL, как я могу это сделать в FBV? Спасибо.
( ОБНОВЛЕНИЕ Я не использую форму django, поскольку входные данные обернуты в selectize.js. Есть ли другой способ, кроме форм django?)