目录
含义:JS对象表示法,其就是一个字符串,用来完成浏览器和服务器之间的数据交换
注意:
理解:
JSON 是存储和交换文本信息的语法。当数据在浏览器与服务器之间进行交换时,这些数据只能是文本。JSON 属于文本,并且我们能够把任何 JavaScript 对象转换为 JSON,然后将 JSON 发送到服务器。我们也能把从服务器接收到的任何 JSON 转换为 JavaScript 对象。以这样的方式,我们能够把数据作为 JavaScript 对象来处理,无需复杂的解析和转译。
- //JSON数据
- var a='"name":"lili"'
- //JSON对象
- var b='{"name":"lucy","age":8,"boolean":true}'
- //JSON数组
- var c='[{"name":"lucy","age":8},{"name":"lili","age":7}]'
- //对象格式
- '{"name":"lili","age":100,"flag":true}'
- //数组格式
- '[100,"lili",true]'
- //嵌套格式
- '[100,true,["a",10,{"name":"lili","hobbys":["eat","sleep"]}]]'
使用JS里的内置对象JSON.用来把以 JSON 格式写的字符串 和 原生 JavaScript 对象互转.
语法:JSON.stringify(Js对象)
返回值:一个JSON串
语法:JSON.parse("json字符串")
返回值:一个js对象
注意:当把对象转化为JSON串时若原来的对象有方法,则方法不被转化为json数据,直接省略
- <script>
- function Person(name,age){
- this.name=name
- this.age=age
- var fun=function(){console.log("hello world");}
- }
- var p=new Person("lili",8)
- //对象转json串
- var res=JSON.stringify(p)
- console.log(p);
- console.log(res);
- var a='{"name":"kate","age":9,"flag":true}'
- //json串转化为对象
- var b=JSON.parse(a)
- console.log(a);
- console.log(b);
- </script>
含义:(asynchronous javascript and xml)是一种无需重新加载网页的情况下就能够更新部分网页的技术
注意:ajax不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的web应用程序的技术
AJAX特点:局部刷新,异步访问。(依赖于AJAX引擎)
同步特点:一个线程依次加载执行,若数据没有加载完成则其他的数据处于等待状态
1.创建ajax对象
var xhr=new XMLHttpRequest()
2.配置本次请求信息
xhr.open("请求方式","请求地址","是否异步")
注意:是否异步默认为true
3.注册请求完成的事件
xhr.οnlοad=function(){
console.log(xhr.responseText)
}
注意:这个事件会在本次请求完成之后触发
4.把请求发送出去
xhr.send()
注意:这种方式为页面全部加载完可以获得响应数据,可以与readyStateChange事件类比
请求完成:本次请求发送出去,服务器收到我们的请求,并且服务器返回的信息已经回到了浏览器
拿到后端返回的信息:xhr.responseText
- readyState === 0 : 表示未初始化完成,也就是 open 方法还没有执行
- readyState === 1 : 表示配置信息已经完成,也就是执行完 open 之后
- readyState === 2 : 表示 send 方法已经执行完成
- readyState === 3 : 表示正在解析响应内容
- readyState === 4 : 表示响应内容已经解析完毕,可以在客户端使用了
注意:get请求的参数信息要用?拼接写在请求地址的后面,而post请求的参数信息要写在send的括号里面
- <script>
- //get请求
- var a=new XMLHttpRequest()
- a.open("get","http://localhost:8888/test/third?name=我是神",true)//默认就为true
- a.onload=function(){
- console.log(a.responseText);
- }
- a.send()
-
- //post请求
- var b=new XMLHttpRequest()
- b.open("post","http://localhost:8888/test/fourth",true)
- b.onload=function(){
- console.log(JSON.parse(b.responseText));
- }
- //send后面的()就是书写请求体的位置,当你发送post请求并且需要携带参数的时候,需要进行特殊声明
- //特殊声明语法:对象.setRequestHeader("content-type",你传递参数的格式)
- b.setRequestHeader("content-type","application/x-www-form-urlencoded")
- b.send('name=前端&age=18')
- </script>
- <body>
- <!-- 点击时,使用ajax -->
- <div onclick="change()">按钮</div>
- </body>
- <script>
- function change() {
- var xhr = new XMLHttpRequest();
- //定义当 readyState 属性发生变化时被调用的函数
- xhr.onreadystatechange = function () {
- //3. status是200表示请求成功,readyState是4表示请求已完成且响应已就绪
- if (this.status == 200 && this.readyState == 4) {
- //到达指定状态后才能执行指定操作
- //只有ajax发送完并得到结果,才可以从xhr中取得想要的数据
- console.log(xhr.responseText);
- }
- }
- //3.规定请求的类型(请求方式,文件位置,异步)
- xhr.open('get', 'http://localhost:8888/test/second?name=lili', true);
- xhr.send();
- }
- </script>