需要传输的是下图中所有的input中客户端设置的数据

整个页面是用js生成,代码不长,但是用了许多拼接,看起来开比较乱,页面的核心就是下面的部分,有一些关键参数部分就不放了,可以跳过这个

下面开始重点,将表单中的数据以json在ajax发送给后端

function btnChange(values) {
var argList=["xxx","xxx","xxx",,
// 。。。这里的关键参数删了
];
var dict = {};
for (var i=0;i<argList.length;i++)
{
dict[argList[i]+"qxl"]=$("input[name="+argList[i]+"qxl]").val();
dict[argList[i]+"kkx"]=$("input[name="+argList[i]+"kkx]").val();
}
console.log(dict); $.ajax({
beforeSend : function(XMLHttpRequest){
//XMLHttpRequest.setRequestHeader("aadfasdfsdfasdsasasdcccc","ajax");
}, url:"/visualPage/getWarningSet/",
type: "POST",
dataType: "json",
data:dict,
complete: function (data) {
//console.log('aaa')
},
success:function(data){
console.log(data);
// window.open("/visualPage/returnWarning","","width=800,height=600");
// $(".text").text(data.message);
},
});
console.log(values.name); //slice(0,-3)
var warningshow=document.getElementById("warning");
warningshow.style.display='block'; }
url为请求的地址,type提交类型(post,get等),dataType这里用json表示提交的数据格式为json,
data这里是要提交的数据,以字典形式,success为服务器成功响应后要执行的函数,

这里的格式和,分割符一定要注意,格式不对不会发送成功

再看视图里面

from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def getWarningSet(request):
if request.is_ajax():
#print(request.POST)
elename1=[
"xxx","xxx","xxx",
#这里省略关键参数
]
k=0
while k<len(elename1):
startArgsSet[elename1[k]]["qxl"]=request.POST.get(elename1[k]+'qxl', '')
startArgsSet[elename1[k]]["kkx"]=request.POST.get(elename1[k]+'kkx', '')
k+=1
bxml=dicttoxml.dicttoxml(startArgsSet,custom_root='warning')
xml=bxml.decode('utf-8') dom=parseString(xml)
pxml=dom.toprettyxml(indent=' ')
f=open(os.path.join(settings.BASE_DIR,'visualModule/xmlData/warning.xml'),'w',encoding='utf-8')
f.write(pxml)
f.close()
return 'HTTP_'
  
is_ajax()可以判断是否是ajax请求,如果前段是用get来发送不用检测

直接用request.POST.get("json中的键值")即可获取对应数据

一般通过 return JsonResponse(name_dict)这样来响应给前段数据,我这里没有进行这一步,只返回了一个字符串

return 'HTTP_',

这里是直接将数据转换为xml存储到服务器,只是为了序列化用户的设置,会有别的视图函数来专门解析xml到字典发送到前端,所以我使用ajax只是为了实时存储用户设置,并不会立即反馈给用户。

ajax可以用来来传输json,字典,字符串,数组等格式的数据

下面是ajax另一种格式,比上面的格式简化多了

$.get("/add/",{'a':a,'b':b}, function(ret){
$('#result').html(ret);
})

还有JavaScript原生的用法,需要的可以自行选择

 var xmlhttp;
//创建ajax对象
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} //onreadystatechange 事件中的就绪状态时执行的函数:
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText; //xml
xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("myDiv").innerHTML=txt;
}
}
//向服务器发送请求
xmlhttp.open("POST","ajax_test.html",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");

												

最新文章

  1. MySQL 5.7 学习:新增配置参数
  2. Velocity(7)——#foreach指令
  3. 面试准备(二) 绘制 Activity 的生命流程图
  4. php生成百度站点地图sitemap.xml
  5. Hadoop 1.1.2 Eclipse 插件使用——异常解决
  6. 1.6.4 Uploading Structured Data Store Data with the Data Import Handler
  7. camera理论基础和工作原理
  8. 为何某些公司不允许使用C++ STL?
  9. MarkDown/reST 文档发布流水线
  10. Mysql介绍和实践总结
  11. java乱码问题处理
  12. ES6标准入门 第一章:简介
  13. python glob模块使用笔记(更新)
  14. Jmeter工具之上传图片,上传音频文件接口
  15. FortiGate路由模式--静态地址线路上网配置
  16. 微信小程序のCss(一)
  17. html select 和dropdownlist小结收集
  18. easyUI datebox 日期空间斜杠格式化。例如将日期空间中显示2017-03-13,改为2017/03/13
  19. Ubuntu连接多台Ubuntu server的问题
  20. BZOJ4700 适者(贪心+cdq分治+斜率优化)

热门文章

  1. (转)RocketMQ工作原理
  2. django中使用pandas Django-pandas
  3. Java操作数据库——使用连接池连接数据库
  4. CodeForces - 1230D(思维+位运算)
  5. Python踩坑系列之使用redis报错:module &#39;redis&#39; has no attribute &#39;Redis&#39;问题
  6. mathematica练习程序(曲线的曲率与挠率)
  7. golang--redis连接池
  8. C语言程序设计100例之(9):生理周期
  9. Eclipse引入自定义XML约束文件(DTD,SCHEMA)问题
  10. Java Arrays类方法