6.jsonp跨域请求
跨域是指从一个域名的网页去请求另一个域名的资源。只要协议、域名、端口有任何一个的不同,就被当作是跨域
jsonp的本质:动态创建script标签,然后通过它src属性发送跨域请求,然后服务器响应的数据格式为
【函数调用(foo(实参))】, 所以在发送请求之前必须先声明一个函数,并且函数的名字与参数中传递的
名字要一致,这里声明的函数是由服务器响应的内容,(实际就是一段js代码-函数调用)来调用
ajax和jsonp其实本质上是不同的东西。
ajax的核心是通过XMLHttpRequest获取非本页内容,
jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本。
$.ajax({
type: "get", //只可以get,没有post,因为是通过动态添加script的,没有添加post请求头
async: false, //script标签请求数据后再执行,async是异步的意思,这里是同步
url: "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998",
dataType: "jsonp", //jsonp跨域请求
jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback:"flightHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函
//数名,jQuery会自自动在页面添加这个函数,后台返回的是这个函数的调用,而我们请求的数
//据作为参数传入,这样前台就可以拿到数据了
success: function(json){
alert('您查询到航班信息:票价: ' + json.price + ' 元,余票: ' + json.tickets + ' 张。');
},
error: function(){
alert('fail');
}
});
7、JSON的了解?XML和JSON的区别?
*了解: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 它是基于JavaScript的一个子
集。数据格式简单, 易于读写, 占用带宽小;
{'age':'12', 'name':'back'} JSON.parse('str') //转换string为JSON格式
JSON.stringfy('JSON') //转换JSON为string格式
*区别:
(1).数据体积方面。
JSON相对于XML来讲,数据的体积小,传递的速度更快些。
(2).数据交互方面。
JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。
(3).数据描述方面。
JSON对数据的描述性比XML较差。
(4).传输速度方面。
JSON的速度要远远快于XML。
网友评论