前两天,有人给我一个写好ajax的前台页面,这个ajax为什么发生了一系列诡异的行为:
1、点击按钮执行了两次提交
2、得到了后台返回前台的json数据,但是就是不走success,直接把返回的数据显示在了页面上
刚开始,一直以为是django后台的问题,以为返回的数据不是json,导致前台接收错误,试了JsonHttpResponse,也
试了使用Python自带的json.dumps(dict())然后再return,结果都不行,最后经过一系列研究,最后发现,原来原因是在前台!
首先,这个前台是个未完成品,只是用来测试的,使用的form表单,里面放了一个<input>标签,关键就在于,这个input没有指定type,导致了两次提交数据到action,展示了一个很诡异的结果,这是第一个坑,一个前台小白写的页面坑了
第二个坑,ajax在提交数据时,必须指定接收的数据类型,我们后台返回的是json数据,所以一定要指定服务器预期返回的的数据格式,datatype属性为json,如果不指定或者指定其它的类型,而返回的类型与预期的返回类型不匹配,就会走error指定的方法