Django下如果想使用Ajax,仅仅配置相应的url,data,type是不够的。下面介绍一种解决方案:
第一步:引入jquery文件
<script type="text/javascript" src="/static/js/jquery-3.2.1.min.js"></script>第二步:配置Ajax的url等信息
//将数据传输到后台 $.ajax({ url:'/BC_DB/',//views文件中相应的处理函数(当然也要在urls.py中配置path) type:"POST",//传送方式 data:JSON.stringify({//JOSN格式封装 Simple_Oil_ID:OilName,//传送数据OilName, Simple_YH_Data:YH_Data,//传送数据YH_Data }), contentType:'application/json', traditional:true,//需要传递列表,字典时加上这句 success:function (result) { if(result=='success') { //清空YH_Data数据 YH_Data=[]; //重置select var index=Select_TName.selectedIndex;//选中索引 Select_TName.options.remove(index); alert("存入成功!"); } else { alert("存入失败!"); } },
第三步:创建一个名为AjaxDeal.js文件,当然可以用其他文件名。代码如下
function getCookie(name) { var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)) return unescape(arr[2]); else return null; } $(function () { $.ajaxSetup({ headers: { "X-CSRFToken": getCookie("csrftoken") } }); });
由于上面我使用的是json格式的传送方式,所以后台接受时要进行相应的转换,代码如下:
json_receive = json.loads(request.body) ID=json_receive['Simple_Oil_ID'] YH_Data=[] YH_Data=json_receive['Simple_YH_Data']