一、Jsonp 关键字详解
1. Jsonp的全称是“JSON with Padding”,即“带填充的JSON”。
2. Jsonp是一种跨域请求方式,允许在不同域之间请求数据,常用于跨域解决方案。
3. Jsonp的原理是利用script标签的src属性可以跨域加载资源的特性,通过在url中加入callback参数,将回调函数名传递给服务端,服务端返回一小段js代码,调用回调函数,将数据以参数的形式传递给回调函数,并执行回调函数。回调函数名一般由客户端随机生成。
4. Jsonp请求使用的是get方法,因为script标签只支持get方法。
二、json和jsonp的区别
1. Json是一种数据格式,用于存储或交换数据。
2. Jsonp是一种跨域请求方式,可以帮助我们获取远程服务器端返回的json数据,并且不受同源策略的限制。
3. Json通常使用ajax进行请求和响应,且仅能在同域名下使用。
4. Jsonp则使用script标签进行请求,由于script标签的src属性无同源限制,所以可以跨域请求。
三、ajax和jsonp的区别
1. Ajax是XMLHttpRequest对象调用后台接口获取Json格式的数据,客户端通过js调用XMLHttpRequest实例,可以进行异步与服务器端的数据交互,在不需要刷新页面的情况下更新部分页面内容。
2. Jsonp使用的是获取json数据的方法。Jsonp是在客户端定义一个函数,通过script标签的src属性向服务端请求数据,在服务端接受到请求后将数据存放在客户端定义的函数中,再将整个函数返回给客户端。客户端拿到返回结果后解析数据。
3. 相对而言,Ajax更加灵活,但受同源策略限制,Jsonp则可以跨域请求,但功能受限。具体选择使用哪个技术需要按照具体情况决策。
示例1:
下面是一个使用ajax获取json的代码:
$.ajax({
url:"http://example.com/data.json",
type:"get",
success:function(data) {
console.log(data);
},
});
示例2:
下面是一个使用jsonp获取数据的代码:
function callback(data){
console.log(data);
}
var script = document.createElement("script");
script.src = "http://example.com/jsonp?callback=callback";
document.body.appendChild(script);
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别 - Python技术站