【发布时间】:2020-02-09 16:55:45
【问题描述】:
我有一个通过 Ajax 提交的表单,并希望将处理后的数据传递到相同的 HTML 以进行数据输入。
不确定是否正确,我已将数据发布到 url /cat_select 并计划在同一 url 中获取 Python 处理的值,但我在获取数据时遇到问题。
下面是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_result 打开 /cat_select 时,我得到的是空列表,而不是 Python 控制台中打印的内容。如何访问处理后的值?
我想在网页上显示cat_result。我希望在提交表单然后返回后处理数据,但浏览器似乎在POST 之前使用以下代码处理GET 数据。
<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 表单还有其他方法吗?)
【问题讨论】:
标签: jquery django ajax django-rest-framework django-views