欢迎使用CSDN-markdown编辑器

来源:互联网 发布:伊娃格林知乎 编辑:程序博客网 时间:2024/05/16 14:01

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(){},//失败回调
});
后端的处理:
jsonp=_GET[‘callback’];
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”);

原创粉丝点击