1.解析json
eg:var jsondata=’{“staff”:[{“name”:“zhang”,“age”:11,“sex”:“男”}]}’;
a)eval(’(’+jsondata+’)’);
b)JSON.parse(jsondata);
return {
“staff”:[
{
“name”:“zhang”,
“age”:11,
“sex”:“男”
}
]
}
两者的区别:
eval 将字符串转换为javascript语句进行执行
1:可能会出现其它问题
2:不安全 可能执行恶意的程序(不可控)
3:不能自动解析当前的语句是否是正确的json格式的语句
2.jQuery.ajax([setting])
eg:jQuery.ajax({
type:‘post’,//请求方法
url:‘http://www.baidu.com’,//请求地址
data:{//请求数据
serWord:‘查找’,
},
dataType:‘json’,//服务器返回的数据类型
success:function(){},//成功回调
erro:function(){},//失败回调
});
jquery 封装的ajax请求
默认添加请求头部 “Content-Type”: “application/x-www-form-urlencoded; charset=UTF-8”
3.跨域问题:
http:// www . baidu.com : 8080 / demo.html
协议 子域名 主域名 端口号 请求资源地址
只要协议/子域名/主域名/端口号有一个不相同时 都算做不同域
不同域之间相互请求资源 就叫"跨域"
跨域的原因:
JavaScript出于安全方面的考虑 不与许跨域调用其他页面的对象(JavaScript同源策略的限制)
顾名思义:a.com下的js无法操作b.com下的对象
4.解决跨域
1).后台服务器进行代理操作
eg:网站在不同的服务器上进行部署 一个服务器a请求另外一个服务器b让后端将数据返回给前端就可以了 这样和前端请求a服务器和请求b服务器的效果就是一样的了
2).jsonp(局限性:不支持post请求)
前端的处理:
eg:jQuery.ajax({
type:‘get’,//请求方法
url:‘http://www.baidu.com’,//请求地址
data:{//请求数据
serWord:‘查找’,
},
dataType:‘jsonp’,//服务器返回的数据类型
jsonp:‘callback’,
success:function(){},//成功回调
erro:function(){},//失败回调
});
后端的处理:
j
s
o
n
p
=
jsonp=
jsonp=_GET[‘callback’];
r
e
s
u
l
t
=
result=
result=jsonp.’({“success”:true.“msg”:“成功找到数据”})’
3)xhr2(局限性:不支持IE10以下) html5新功能(CORS 跨域)
前端:
eg:jQuery.ajax({
type:‘get’,//请求方法
url:‘http://www.baidu.com’,//请求地址
data:{//请求数据
serWord:‘查找’,
},
dataType:‘json’,//服务器返回的数据类型
success:function(){},//成功回调
erro:function(){},//失败回调
});
服务端:(设置相应头部)
header(“Access-Control-Allow-Origin:*”);
header(“Access-Control-Allow-Methods:POST,GET”);