JSONP
前面的话
JSONP是JSON with padding(填充式JSON或参数式JSON)的简写,是应用JSON的一种新方法,常用于服务器与客户端跨源通信,在后来的Web服务中非常流行。本文将详细介绍JSONP
基础
JSONP的基本思想是,网页通过添加一个
当通过
[1, 2, {“buckle”: “my shoe”}]
JSONP看起来与JSON差不多,只不过是被包含在函数调用中的JSON,它会发送这样一个包裹后的JSON响应:
handleResponse([l, 2, {“buckle”: “my shoe”}])
包裹后的响应会成为
在实践中,支持JSONP的服务不会强制指定客户端必须实现的回调函数名称,比如handleResponse。相反,它们使用査询参数的值,允许客户端指定一个函数名,然后使用函数名去填充响应。许多支持JSONP的服务都能分辨出这个参数名。另一个常见的参数名称是callback,为了让使用到的服务支持类似特殊的需求,就需要在代码上做一些修改了
JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。而数据就是传入回调函数中的JSON数据
http://freegeoip.net/json/?callback=handleResponse
这个URL是在请求一个JSONP地理定位服务。通过査询字符串来指定JSONP服务的回调参数是很常见的,就像上面的URL所示,这里指定的回调函数的名字叫handleResponse()
JSONP是通过动态
复制代码
function handleResponse(response){
alert ("You’re at IP address " + response.ip + ", which is in " + response.city + ", "+ response.region_name);
}
var script = document.createElement(“script”);
script.src = “http://freegeoip.net/json/?callback=handLeResponse”; document.body.insertBefore(script, document.body.firstChild);
复制代码
JSONP之所以在开发人员中极为流行,主要原因是它非常简单易用,老式浏览器全部支持,服务器改造非常小。与图像Ping相比,它的优点在于能够直接访问响应文本,支持在浏览器与服务器之间双向通信
使用
不过,JSONP也有两点不足:首先,JSONP是从其他域中加载代码执行。如果其他域不安全,很可能会在响应中夹带一些恶意代码,而此时除了完全放弃JSONP调用之外,没有办法追究。因此在使用不是自己运维的Web服务时,一定得保证它安全可靠;其次,要确定JSONP请求是否失败并不容易。虽然HTML5给
简易示例
【前端】
复制代码
获取信息
复制代码
<?php function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } $arr = [1,2,3,4,5]; echo test_input($_GET['callback']) ."(" .json_encode($arr) .");"; ?>复制代码
百度搜索框
百度搜索框就是使用了JSONP的技术,在百度搜索的URL中,有用的查询如下
https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=123&&cb=a
结果为:
a({q:“123”,p:false,s:[“12306”,“12306铁路客户服务中心”,“12308汽车订票官网”,“12306火车票网上订票官网”,“12333”,“12315”,“12345”,“12333社保查询网”,“123网址之家”,“12366”]});
所以,wd为关键词,cb用来JSONP的函数名。在获取的数据中,s为以关键词开始的数据组成的数据
百度搜索的关键URL如下
https://www.baidu.com/s?wd=a
wd为关键词,当wd=a时,将打开关键词为a的网页
复制代码
复制代码最后
如果在jQuery中使用jsonp技术,需要使用ajax()方法,将datatype设置为’jsonp’,将jsonp设置为函数名,如’callback’
以上JSONP
前面的话
JSONP是JSON with padding(填充式JSON或参数式JSON)的简写,是应用JSON的一种新方法,常用于服务器与客户端跨源通信,在后来的Web服务中非常流行。本文将详细介绍JSONP
基础
JSONP的基本思想是,网页通过添加一个
当通过
[1, 2, {“buckle”: “my shoe”}]
JSONP看起来与JSON差不多,只不过是被包含在函数调用中的JSON,它会发送这样一个包裹后的JSON响应:
handleResponse([l, 2, {“buckle”: “my shoe”}])
包裹后的响应会成为
在实践中,支持JSONP的服务不会强制指定客户端必须实现的回调函数名称,比如handleResponse。相反,它们使用査询参数的值,允许客户端指定一个函数名,然后使用函数名去填充响应。许多支持JSONP的服务都能分辨出这个参数名。另一个常见的参数名称是callback,为了让使用到的服务支持类似特殊的需求,就需要在代码上做一些修改了
JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。而数据就是传入回调函数中的JSON数据
http://freegeoip.net/json/?callback=handleResponse
这个URL是在请求一个JSONP地理定位服务。通过査询字符串来指定JSONP服务的回调参数是很常见的,就像上面的URL所示,这里指定的回调函数的名字叫handleResponse()
JSONP是通过动态
复制代码
function handleResponse(response){
alert ("You’re at IP address " + response.ip + ", which is in " + response.city + ", "+ response.region_name);
}
var script = document.createElement(“script”);
script.src = “http://freegeoip.net/json/?callback=handLeResponse”; document.body.insertBefore(script, document.body.firstChild);
复制代码
JSONP之所以在开发人员中极为流行,主要原因是它非常简单易用,老式浏览器全部支持,服务器改造非常小。与图像Ping相比,它的优点在于能够直接访问响应文本,支持在浏览器与服务器之间双向通信
使用
不过,JSONP也有两点不足:首先,JSONP是从其他域中加载代码执行。如果其他域不安全,很可能会在响应中夹带一些恶意代码,而此时除了完全放弃JSONP调用之外,没有办法追究。因此在使用不是自己运维的Web服务时,一定得保证它安全可靠;其次,要确定JSONP请求是否失败并不容易。虽然HTML5给
简易示例
【前端】
复制代码
获取信息
复制代码
<?php function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } $arr = [1,2,3,4,5]; echo test_input($_GET['callback']) ."(" .json_encode($arr) .");"; ?>复制代码
百度搜索框
百度搜索框就是使用了JSONP的技术,在百度搜索的URL中,有用的查询如下
https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=123&&cb=a
结果为:
a({q:“123”,p:false,s:[“12306”,“12306铁路客户服务中心”,“12308汽车订票官网”,“12306火车票网上订票官网”,“12333”,“12315”,“12345”,“12333社保查询网”,“123网址之家”,“12366”]});
所以,wd为关键词,cb用来JSONP的函数名。在获取的数据中,s为以关键词开始的数据组成的数据
百度搜索的关键URL如下
https://www.baidu.com/s?wd=a
wd为关键词,当wd=a时,将打开关键词为a的网页
复制代码
复制代码最后
如果在jQuery中使用jsonp技术,需要使用ajax()方法,将datatype设置为’jsonp’,将jsonp设置为函数名,如’callback’
以上JSONP
前面的话
JSONP是JSON with padding(填充式JSON或参数式JSON)的简写,是应用JSON的一种新方法,常用于服务器与客户端跨源通信,在后来的Web服务中非常流行。本文将详细介绍JSONP
基础
JSONP的基本思想是,网页通过添加一个
当通过
[1, 2, {“buckle”: “my shoe”}]
JSONP看起来与JSON差不多,只不过是被包含在函数调用中的JSON,它会发送这样一个包裹后的JSON响应:
handleResponse([l, 2, {“buckle”: “my shoe”}])
包裹后的响应会成为
在实践中,支持JSONP的服务不会强制指定客户端必须实现的回调函数名称,比如handleResponse。相反,它们使用査询参数的值,允许客户端指定一个函数名,然后使用函数名去填充响应。许多支持JSONP的服务都能分辨出这个参数名。另一个常见的参数名称是callback,为了让使用到的服务支持类似特殊的需求,就需要在代码上做一些修改了
JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。而数据就是传入回调函数中的JSON数据
http://freegeoip.net/json/?callback=handleResponse
这个URL是在请求一个JSONP地理定位服务。通过査询字符串来指定JSONP服务的回调参数是很常见的,就像上面的URL所示,这里指定的回调函数的名字叫handleResponse()
JSONP是通过动态
复制代码
function handleResponse(response){
alert ("You’re at IP address " + response.ip + ", which is in " + response.city + ", "+ response.region_name);
}
var script = document.createElement(“script”);
script.src = “http://freegeoip.net/json/?callback=handLeResponse”; document.body.insertBefore(script, document.body.firstChild);
复制代码
JSONP之所以在开发人员中极为流行,主要原因是它非常简单易用,老式浏览器全部支持,服务器改造非常小。与图像Ping相比,它的优点在于能够直接访问响应文本,支持在浏览器与服务器之间双向通信
使用
不过,JSONP也有两点不足:首先,JSONP是从其他域中加载代码执行。如果其他域不安全,很可能会在响应中夹带一些恶意代码,而此时除了完全放弃JSONP调用之外,没有办法追究。因此在使用不是自己运维的Web服务时,一定得保证它安全可靠;其次,要确定JSONP请求是否失败并不容易。虽然HTML5给
简易示例
【前端】
复制代码
获取信息
复制代码
<?php function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } $arr = [1,2,3,4,5]; echo test_input($_GET['callback']) ."(" .json_encode($arr) .");"; ?>复制代码
百度搜索框
百度搜索框就是使用了JSONP的技术,在百度搜索的URL中,有用的查询如下
https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=123&&cb=a
结果为:
a({q:“123”,p:false,s:[“12306”,“12306铁路客户服务中心”,“12308汽车订票官网”,“12306火车票网上订票官网”,“12333”,“12315”,“12345”,“12333社保查询网”,“123网址之家”,“12366”]});
所以,wd为关键词,cb用来JSONP的函数名。在获取的数据中,s为以关键词开始的数据组成的数据
百度搜索的关键URL如下
https://www.baidu.com/s?wd=a
wd为关键词,当wd=a时,将打开关键词为a的网页
复制代码
复制代码最后
如果在jQuery中使用jsonp技术,需要使用ajax()方法,将datatype设置为’jsonp’,将jsonp设置为函数名,如’callback’
以上JSONP
前面的话
JSONP是JSON with padding(填充式JSON或参数式JSON)的简写,是应用JSON的一种新方法,常用于服务器与客户端跨源通信,在后来的Web服务中非常流行。本文将详细介绍JSONP
基础
JSONP的基本思想是,网页通过添加一个
当通过
[1, 2, {“buckle”: “my shoe”}]
JSONP看起来与JSON差不多,只不过是被包含在函数调用中的JSON,它会发送这样一个包裹后的JSON响应:
handleResponse([l, 2, {“buckle”: “my shoe”}])
包裹后的响应会成为
在实践中,支持JSONP的服务不会强制指定客户端必须实现的回调函数名称,比如handleResponse。相反,它们使用査询参数的值,允许客户端指定一个函数名,然后使用函数名去填充响应。许多支持JSONP的服务都能分辨出这个参数名。另一个常见的参数名称是callback,为了让使用到的服务支持类似特殊的需求,就需要在代码上做一些修改了
JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。而数据就是传入回调函数中的JSON数据
http://freegeoip.net/json/?callback=handleResponse
这个URL是在请求一个JSONP地理定位服务。通过査询字符串来指定JSONP服务的回调参数是很常见的,就像上面的URL所示,这里指定的回调函数的名字叫handleResponse()
JSONP是通过动态
复制代码
function handleResponse(response){
alert ("You’re at IP address " + response.ip + ", which is in " + response.city + ", "+ response.region_name);
}
var script = document.createElement(“script”);
script.src = “http://freegeoip.net/json/?callback=handLeResponse”; document.body.insertBefore(script, document.body.firstChild);
复制代码
JSONP之所以在开发人员中极为流行,主要原因是它非常简单易用,老式浏览器全部支持,服务器改造非常小。与图像Ping相比,它的优点在于能够直接访问响应文本,支持在浏览器与服务器之间双向通信
使用
不过,JSONP也有两点不足:首先,JSONP是从其他域中加载代码执行。如果其他域不安全,很可能会在响应中夹带一些恶意代码,而此时除了完全放弃JSONP调用之外,没有办法追究。因此在使用不是自己运维的Web服务时,一定得保证它安全可靠;其次,要确定JSONP请求是否失败并不容易。虽然HTML5给
简易示例
【前端】
复制代码
获取信息
复制代码
<?php function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } $arr = [1,2,3,4,5]; echo test_input($_GET['callback']) ."(" .json_encode($arr) .");"; ?>复制代码
百度搜索框
百度搜索框就是使用了JSONP的技术,在百度搜索的URL中,有用的查询如下
https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=123&&cb=a
结果为:
a({q:“123”,p:false,s:[“12306”,“12306铁路客户服务中心”,“12308汽车订票官网”,“12306火车票网上订票官网”,“12333”,“12315”,“12345”,“12333社保查询网”,“123网址之家”,“12366”]});
所以,wd为关键词,cb用来JSONP的函数名。在获取的数据中,s为以关键词开始的数据组成的数据
百度搜索的关键URL如下
https://www.baidu.com/s?wd=a
wd为关键词,当wd=a时,将打开关键词为a的网页
复制代码
复制代码最后
如果在jQuery中使用jsonp技术,需要使用ajax()方法,将datatype设置为’jsonp’,将jsonp设置为函数名,如’callback’
以上