概念
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- JSON 是轻量级的文本数据交换格式
- JSON 独立于语言 *
- JSON 具有自我描述性,更易理解
示例
- ["one", "two", "three"]
- { "one": 1, "two": 2, "three": 3 }
- {"names": ["张三", "李四"] }
- [ { "name": "张三"}, {"name": "李四"} ]
格式不正确的示例
- { name: "张三", 'age': 32 } // 属性名必须使用双引号
- [32, 64, 128, 0xFFF] // 不能使用十六进制值
- { "name": "张三", "age": undefined } // 不能使用undefined
- { "name": "张三","birthday": new Date('Fri, 26 Aug 2011 07:13:10 GMT'),"getName": function() {return this.name;} // 不能使用函数和日期对象}
相关方法
JavaScript中关于JSON对象和字符串转换的两个方法:
-
- JSON.parse(): 用于将一个 JSON 字符串转换为 JavaScript 对象
- JSON.parse('{"name":"Q1mi"}');
- JSON.parse('{name:"Q1mi"}') ; // 错误
- JSON.parse('[18,undefined]') ; // 错误
-
- JSON.stringify(): 用于将 JavaScript 值转换为 JSON 字符串。
- JSON.stringify({"name":"Q1mi"})
和XML的比较
- 书写简单
- 一目了然
- 可以由解释引擎直接处理
- 无需另外添加解析代码
AJAX
概念
- 使用Javascript语言与服务器进行异步交互进行传输的数据的传输
- 在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
- 无需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。
- 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
- 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发第二个请求
示例
1 // HTML部分代码 2 !DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <meta charset="UTF-8"> 6 <meta http-equiv="x-ua-compatible" content="IE=edge"> 7 <meta name="viewport" content="width=device-width, initial-scale=1"> 8 <title>AJAX局部刷新实例</title> 9 </head> 10 <body> 11 12 <input type="text" id="i1">+ 13 <input type="text" id="i2">= 14 <input type="text" id="i3"> 15 <input type="button" value="AJAX提交" id="b1"> 16 17 <script src="/static/jquery-3.2.1.min.js"></script> 18 <script> 19 $("#b1").on("click", function () { 20 $.ajax({ 21 url:"/ajax_add/", 22 type:"GET", 23 data:{ 24 "i1":$("#i1").val(), 25 "i2":$("#i2").val() 26 }, 27 success:function (data) { 28 $("#i3").val(data); 29 } 30 }) 31 }) 32 </script> 33 </body> 34 </html> 35 36 37 # views.py 38 def ajax_demo1(request): 39 return render(request, "ajax_demo1.html") 40 41 42 def ajax_add(request): 43 i1 = int(request.GET.get("i1")) 44 i2 = int(request.GET.get("i2")) 45 ret = i1 + i2 46 return JsonResponse(ret, safe=False) 47 48 49 urls.py 50 urlpatterns = [ 51 ... 52 url(r'^ajax_add/', views.ajax_add), 53 url(r'^ajax_demo1/', views.ajax_demo1), 54 ... 55 ]