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

未完待续。。。。。。。。。。。。。。。。。。。。。。。。。。。。

原文地址:https://www.cnblogs.com/linpei/p/10620339.html