Django 使用jQuery实现ajax
先说JSON(JavaScript Object Notation),JSON是用字符串来表示Javascript对象,是一种轻量级的数据交换格式。
请大家记住一句话:json字符串就是js对象的一种表现形式(字符串的形式)
需要注意的是,json对象是用双引号的,不能用单引号。
json的数据类型和python的都很像,在python中,python对象转换json对象,可以使用json.dumps()转成json字符串进行保存(因为将dict直接保存到文本),再使用json.loads()转成python对象。
json对象也有相应的方法做增删改查,和python差不多。
将后端python对象转换为前端json对象过程如下图:
让我们看一个带方法的json对象(object):
var person = {"name":"alex", "sex":"men", "teacher":{ "name":"tiechui", "sex":"half_men", }, "bobby":['basketball','running'], "getName":function() {return 80;} }; alert(person.name); alert(person.getName()); alert(person.teacher.name); alert(person.bobby[0]);
使用ajax时,Django向前端发送字符串,return HttpResponse(“ok”),此时括号中只能是字符串,当要想传输其他类型如dict,需要先json.dumps(dict)转换成json字符串,再传到前端,前端通过 parse() 来讲字符串转换成json对象来使用。
parse()和.stringify() 说明:
parse() 用于从一个json字符串中解析出json对象,如 var str = '{"name":"yuan","age":"23"}' 结果:JSON.parse(str) ------> Object {age: "23",name: "yuan"} stringify()用于从一个json对象解析成json字符串,如 var c= {a:1,b:2} 结果: JSON.stringify(c) ------> '{"a":1,"b":2}' 注意1:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。 注意2: a={name:"yuan"}; //ok b={'name':'yuan'}; //ok c={"name":"yuan"}; //ok alert(a.name); //ok alert(a[name]); //undefined alert(a['name']) //ok
Ajax实例:
<script> $.ajax({ url:"/", // POST 或 GET 提交路径 type:"POST", // 数据提交类型 data:{a:1,b:[3,4]}, // 传输到服务器端的数据 traditional:true, // 当data数据中有列表时,会进行深层次迭代,此设置可取消深层次迭代 processData:true, // 声明当前的data数据是否进行转码或预处理,默认为true,即预处理;该属性的意义在于,当data是一个dom // 结构或者xml数据时,我们希望数据不要进行处理,直接发过去就可以,将其设为true。 contentType:"application/x-www-form-urlencoded", // 发送信息至服务器时内容编码类型。 如果是"application/json", // 即向服务器发送一个json字符串(不是josn对象) dataType:"json", // 预期服务器返回的数据类型。默认是不需要的,ajax会根据服务器返回的content Type来进行转换 }) </script>
参考资料:http://www.cnblogs.com/yuanchenqi/articles/5997456.html
未完待续。。。。。。。。。。。。。。。。。。。。。。。。。。。。