今天这篇文章呢,主要讲的就是关于HTTP协议、Ajax请求以及一些相关的小知识点。虽然内容不算多,可是是很重点的东西~
HTTP协议
1. http:超文本传输协议。简单、快速、灵活、无状态、无连接。
2. url:统一资源定位符。
组成部分:协议名://主机名(主机ip):端口号/项目资源地址?传递参数的键值对#锚点
eg: http://192.168.5.151:8080/js/index.php?name=zhangsan#top
① ip地址在同一网段是唯一的。如果是在公网中,整个公网的i是唯一的。
② 端口号默认是:80,可以省略不写。常见的端口号: 80 Apache 8080 tomcat
③ 本机ip:localhost 或者 127.0.0.1
【JSON 对象与JSON字符串】
1. JSON对象:JSON对象就是键值对的集合,键与值之间用:分隔,多对键值对之间用,分隔。
注意:JSON对象,要求键必须使用”“包裹的字符串。”无效!!!
2. JSON字符串:将JSON对象,用字符串的形式进行包裹。可用单引号也可用双引号;
如果用”“包裹,里面用”“包裹的键的双引号要用\转义符转移。
var jsonObj='{"name" : "zhangsan",age: 12,sex : "男"}'; //报错,不能不用双引号包起来 var jsonObj="{'name' : 'zhangsan','age': 12,'sex' : "男"}"; //报错,键必须用双引号包起来 var jsonObj="{'name' : 'zhangsan',age: 12,sex : "男"}"; //报错,不能单引号包着双引号
3. JSON对象与JSON字符串的相互转换:
① 对象转字符串:JSON.stringify(obj)
② 字符串转对象:JSON.parse(jsonObj)
JQuery也提供了字符串转对象的方法:
.parseJSON(jsonObj)</span></p><divclass="cnblogscode"style="background−color:rgb(245,245,245);border:1pxsolidrgb(204,204,204);color:rgb(0,0,0);text−align:left;font−family:′CourierNew′;font−size:12px;"><divclass="cnblogscodetoolbar"><spanclass="cnblogscodecopy"style="line−height:1.5;"><span><u><imgsrc="https://common.cnblogs.com/images/copycode.gif"alt="复制代码"style="border:none;"></u></span></span></div><prestyle="font−family:′CourierNew′;"><spanstyle="font−size:14px;line−height:1.5;">console.log(
.
p
a
r
s
e
J
S
O
N
(
j
s
o
n
O
b
j
)
<
/
s
p
a
n
><
/
p
><
d
i
v
c
l
a
s
s
="
c
n
b
l
o
g
s
c
o
d
e
"
s
t
y
l
e
="
b
a
c
k
g
r
o
u
n
d
−
c
o
l
o
r
:
r
g
b
(
245
,
245
,
245
)
;
b
o
r
d
e
r
:
1
p
x
s
o
l
i
d
r
g
b
(
204
,
204
,
204
)
;
c
o
l
o
r
:
r
g
b
(
0
,
0
,
0
)
;
t
e
x
t
−
a
l
i
g
n
:
l
e
f
t
;
f
o
n
t
−
f
a
m
i
l
y
:
′
C
o
u
r
i
e
r
N
e
w
′
;
f
o
n
t
−
s
i
z
e
:
12
p
x
;
"><
d
i
v
c
l
a
s
s
="
c
n
b
l
o
g
s
c
o
d
e
t
o
o
l
b
a
r
"><
s
p
a
n
c
l
a
s
s
="
c
n
b
l
o
g
s
c
o
d
e
c
o
p
y
"
s
t
y
l
e
="
l
i
n
e
−
h
e
i
g
h
t
:
1.5
;
"><
s
p
a
n
><
u
><
i
m
g
s
r
c
="
h
t
t
p
s
:
/
/
c
o
m
m
o
n
.
c
n
b
l
o
g
s
.
c
o
m
/
i
m
a
g
e
s
/
c
o
p
y
c
o
d
e
.
g
i
f
"
a
l
t
="
复
制
代
码
"
s
t
y
l
e
="
b
o
r
d
e
r
:
n
o
n
e
;
"><
/
u
><
/
s
p
a
n
><
/
s
p
a
n
><
/
d
i
v
><
p
r
e
s
t
y
l
e
="
f
o
n
t
−
f
a
m
i
l
y
:
′
C
o
u
r
i
e
r
N
e
w
′
;
"><
s
p
a
n
s
t
y
l
e
="
f
o
n
t
−
s
i
z
e
:
14
p
x
;
l
i
n
e
−
h
e
i
g
h
t
:
1.5
;
">
c
o
n
s
o
l
e
.
l
o
g
(
.parseJSON(jsonObj)); //JSON对象转为字符串 var jsonObj=’{“name” : “zhangsan”,”age”: 12,”sex” : “男”}’; console.log(jsonObj);//本身打印出来是个字符串 var obj=JSON.parse(jsonObj); //字符串转对象 console.log(obj); var str=JSON.stringify(obj); //对象转字符串 console.log(str);
4. JSON数组:将多个JSON对象组成数组的形式存放,称为JSON数组。
JSON数组可以和JSON对象相互嵌套,也就是说,JSON对象的值可以是JSON数组。
//可以直接接收数组,数组内部有多个对象 var jsonArr=[ { "name":"zhangsan", "hobby":[{"吃":"水果","玩":"游戏"}] }, { "name":"zhangsan", "hobby":[{"吃":"水果","玩":"游戏"}] }, { "name":"zhangsan", "hobby":[{"吃":"水果","玩":"游戏"}] } ]; var strArr=JSON.stringify(jsonArr); //JSON对象转数组 console.log(strArr); var jsonArr1=JSON.parse(strArr); //JSON数组转为对象 console.log(jsonArr1)
后台请求数据的方法
1. .load():选中当前界面的一个DOM节点。并在当前DOM节点中加载一块HTML代码片段; </span></p><p style="color:rgb(0,0,0);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;text-align:left;background-color:rgb(255,255,255);"><span style="font-family:'Microsoft YaHei';font-size:15px;"> 接受的参数:</span><br><span style="font-family:'Microsoft YaHei';font-size:15px;"> ① 可以是一个html文件的地址,表示将整个的html文件加载到当前区域;</span><br><span style="font-family:'Microsoft YaHei';font-size:15px;">
.load():选中当前界面的一个DOM节点。并在当前DOM节点中加载一块HTML代码片段; </span></p><p style="color:rgb(0,0,0);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;text-align:left;background-color:rgb(255,255,255);"><span style="font-family:'Microsoft YaHei';font-size:15px;"> 接受的参数:</span><br><span style="font-family:'Microsoft YaHei';font-size:15px;"> ① 可以是一个html文件的地址,表示将整个的html文件加载到当前区域;</span><br><span style="font-family:'Microsoft YaHei';font-size:15px;">
(“#div1”).load(“test.html”);
② 可以是一个html文件+各种选择器,表示选择该页面的指定区域进行加载。
("#div1").load("test.html #ul");</span></p><p style="color:rgb(0,0,0);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;text-align:left;background-color:rgb(255,255,255);"><span style="font-family:'Microsoft YaHei';font-size:15px;">2.
("#div1").load("test.html #ul");</span></p><p style="color:rgb(0,0,0);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;text-align:left;background-color:rgb(255,255,255);"><span style="font-family:'Microsoft YaHei';font-size:15px;">2.
.ajax():是JQuery中最底层的ajax函数。
参数接收一个大对象,用对象的键值对表示ajax请求的相关设置:
① type:表示Ajax请求的方法,可以是get和post
② url:表示请求的后台url地址。
③ success:表示请求成功的回调函数。回调函数将接受三个参数,其中第一个参数是请求成功返回的数据。后两个不用管不重要。
使用数据时,需注意返回的数据是JSON字符串还是JSON对象。
④ error:当请求失败时执行的回调函数。
⑤ complete:请求完成后,无论成功或者失败都会执行的回调函数.。
⑥ statusCode:接收一个对象,对象的键是各种status状态码,对象的值表示每种状态码对应的回调函数。
⑦ async:设为true表示异步请求(默认);设为false表示同步请求。
⑧ data:请求时,向后台请求的数据,是一个对象类型,以键值对的形式分别表示 name:value。非常常用!!!!!
⑨ dataType:与其返回的数据类型格式。常见的有 JSON/text/html
⑩ timeout:设置请求超时时间。
$.ajax({ type:"get", url:"java1801.json?age=14", //往后台传参(小数据),也可以在后面加上?age=14 async:true, //是否进行异步请求,不写默认是异步 data:{ //往后台传参,以对象形式。发送到服务器的数据,将自动转换为请求字符串格式。 "name":"zhangsan" }, dataType:"text", timeout:1,//设置请求超时时间。默认就行,不用写 success:function(data,textStatus,jqXHR){ //请求成功返回的回调函数 console.log(www.baohuayule.net data); //返回一个对象 console.log(www.duobaoyule2.cn textStatus);//请求成功返回success console.log(www.douniu178.com jqXHR); //jqXHR对象 console.log(www.feifanyule.cn/ jqXHR.responseText) //返回字符串 console.log(www.089188.cn jqXHR.responseJSON) //返回对象 }, error:function(XMLHttpRequest,textStatus,errorThrown){// 请求失败返回的回调函数 console.log(XMLHttpRequest); //XMLHttpRequest对象 console.log(textStatus);www.thd178.com //错误信息:error、timeout console.log(errorThrown); //捕获的异常对象:Not Found }, complete:function(XHR,TS){ //返回success或者error ,不管请求成不成功都会执行 console.log(XHR); console.log(TS); }, statusCode:{ //请求成功或失败的状态码 200:function(){ console.log("请求成功!") }, 404:function(){ console.log("页面没有找到") } }
【检测页面中所有Ajax状态】
执行回调函数。可做了解。。。
$(document).ajaxStart(function(){ //Ajax请求开始时执行函数 console.log(ajaxStart); }); $(document).ajaxError(function(){ //Ajax请求发生错误时执行函数 console.log(ajaxError); }); $(document).ajaxSend(function(){ //Ajax请求发送前执行函数 console.log(ajaxSend); }); $(document).ajaxStop(function(){ //Ajax请求结束时执行函数 console.log(ajaxStop); }); $(document).ajaxSuccess(function(){ //Ajax请求成功时执行函数 console.log(ajaxSuccess); });
3. .get():在 . g e t ( ) : 在 .ajax()的基础上,进行封装,默认使用get请求。
接受四个参数:
① 请求的后台url;
② 传递给后台的数据,对象类型。相当于ajax中的data属性;
③ 请求成功的回调函数,相当于ajax中的success;
④ 预期返回的数据类型,相当于ajax中的dataType;
4. .post():使用方法同 . p o s t ( ) : 使 用 方 法 同 .get()
5. .getJSON():通过get方式,请求JSON数据。</p><divclass="cnblogscode"style="background−color:rgb(245,245,245);border:1pxsolidrgb(204,204,204);color:rgb(0,0,0);text−align:left;font−family:′CourierNew′;font−size:12px;"><divclass="cnblogscodetoolbar"><spanclass="cnblogscodecopy"style="line−height:1.5;"><span><u><imgsrc="https://common.cnblogs.com/images/copycode.gif"alt="复制代码"style="border:none;"></u></span></span></div><prestyle="font−family:′CourierNew′;"><spanstyle="font−size:14px;line−height:1.5;"> . g e t J S O N ( ) : 通 过 g e t 方 式 , 请 求 J S O N 数 据 。 < / p >< d i v c l a s s =" c n b l o g s c o d e " s t y l e =" b a c k g r o u n d − c o l o r : r g b ( 245 , 245 , 245 ) ; b o r d e r : 1 p x s o l i d r g b ( 204 , 204 , 204 ) ; c o l o r : r g b ( 0 , 0 , 0 ) ; t e x t − a l i g n : l e f t ; f o n t − f a m i l y : ′ C o u r i e r N e w ′ ; f o n t − s i z e : 12 p x ; ">< d i v c l a s s =" c n b l o g s c o d e t o o l b a r ">< s p a n c l a s s =" c n b l o g s c o d e c o p y " s t y l e =" l i n e − h e i g h t : 1.5 ; ">< s p a n >< u >< i m g s r c =" h t t p s : / / c o m m o n . c n b l o g s . c o m / i m a g e s / c o p y c o d e . g i f " a l t =" 复 制 代 码 " s t y l e =" b o r d e r : n o n e ; ">< / u >< / s p a n >< / s p a n >< / d i v >< p r e s t y l e =" f o n t − f a m i l y : ′ C o u r i e r N e w ′ ; ">< s p a n s t y l e =" f o n t − s i z e : 14 p x ; l i n e − h e i g h t : 1.5 ; "> .get(“java.json”,function(data){ console.log(data); },“text”); $.post(“java.json”,function(data){ console.log(data); },“json”); $.getJSON(“java.json”,function(data){ console.log(data); });
【Ajax请求三大过程】
同步:页面代码在遇到JS代码时被阻断,等待JS代码请求完全完成后继续执行。
异步:页面代码在遇到JS代码时不会被阻断,等待JS代码请求完成后立即插入继续执行。
<script src=”js/jquery-1.10.2.js” async=”async”></script> //异步
延迟:页面代码在遇到JS代码时不会被阻断,等到JS代码请求完成后再等到页面代码加载完成后才能执行。
<script src=”js/jquery-1.10.2.js” defer=”defer”></script> //延时
常见的状态码
200-请求成功
202-服务器接受请求
400-代码错误
403-访问被拒绝
404-页面没找到
500-服务器错误
501-服务器不支持请求的功能
505-服务器不支持
以下我附上HTTP状态码详解的链接,里面有更加清楚的解释,大家可以自行查看:http://tool.oschina.net/commons?type=5
</div>